Clipper 5.x

Código donado por terceros.

 

Secciones:

Programas

Utilidad para calculos aritmeticos sencillos.

Programa para ver los inidces de una tabla y sus claves en la linea de comandos del DOS.

Función para visualizar la estructura de una dbf en la linea de comandos del DOS.

Función que devuelve un numero entero aleatorio en un rango especifico.

Función que devuelve el digito de control del numero de documento de identidad de Uruguay.

Función para recorrer directorios, pudiendo ser utilizada como "Save..." o como "Save as..."

Objetos radiobutton, checkbox y command button, a la usanza de Windows

Solución a la lentitud al imprimir bajo Windows.

Ejemplos de TBrowse

Imprimir códigos de barras en laser y/o matriz de punto.

Validación CUIT (Argentina)

Clipper Music

Sistema de nómina Pólux


Otros...

Muy pronto...

Esta página se encuentra en construcción, gracias a ustedes está creciendo muy rápidamente.

Programas:

(16/Abr/2003) Utilidad para calculos aritmeticos sencillos.
Autor : Gabriel Tarela Gandini.
De : Montevideo - Uruguay

Funciona igual que las calculadoras con cinta para imprimir datos.

Cada nueva operacion se realiza operando el ultimo valor calculado
( inicialmente 0 ) con el nuevo valor ingresado.
Para agregar un nuevo valor a la operacion se digita el numero y luego
el operador ( operadores validos: +,-,*,/,etc. ver ayuda ).

Ej:
Operacion: ( ( (4 + 8 + 3500) / 8 ) * 2 ) - 3.5 = 874.5

Ingreso:
4+ // ingreso
8+ // ingreso
3500+ // ingreso
8/ // ingreso
2* // ingreso
3.5- // ingreso
s // ingreso
------
874.5s

No acepta operaciones con parentesis.

Para realizar esta operacion: 4 + 8/3

Ingresar:

8+ // ingreso
3/ // ingreso
4+ // ingreso
------
6.66667s

Agregar funcionalidad a la calculadora

Para ampliar la utilidad de la calculadora se puede modificar el
codigo fuente creando nuevas operaciones de forma facil.
Para hacerlo hay que hacer lo siguiente.

1)- Agregar un elemento ( de tipo caracter ) a la variable local aop
de la funcion setkeys() que identifique a la operacion a realizar
para que el read la reconozca como tecla clave para llamar a la
getop() quien llamara a operar() para realizar la operacion

Ej:
aop := { "+","-","*","/","q","l","s","c","<elemento agregado>" }

2)- Crear una funcion que opere la variable static nTotal con la
variable static nNum y le asigne un nuevo valor a nTotal.

function nuevaop()
ntotal := ntotal <nuevo operador> nNum
return 0

3)- Agregar un case <elemento agregado en el punto 1> que llame
a la funcion creada en el punto 2.
Agregar al array aHis la variable nNum y el operador elegido
en el punto 1, luego llamar a la funcion printdata()

Ej:
case cCar = <nuevo operador>

nuevaop()
aadd(aHis,{ nNum,<nuevo operador> })
printdata()

Al compilar la nueva calculadora dara la posibilidad de
realizar la nueva operacion.

Ej:

8+
7<nuevo operador>
s
------
<nuevo resultado>

Mas informacion ->
winzip@montevideo.com.uy

Bajate el archivo : Calc.prg (16 Kb)


(16/Abr/2003) Programa para ver los inidces de una tabla y sus claves en la linea de comandos del DOS.
Autor : Gabriel Tarela Gandini.
De : Montevideo - Uruguay

Parámetros:
ctabla: La tabla a visualizar los indices y sus claves
nReach: Un valor numerico que indica el alacance de la mascara

Se supone que la tabla tiene que estar en el directorio actual del DOS

¿ Cual es la mascara ?

Es una buena costumbe, ( imprescindible diria yo ), utilizar la
siguiente nomenclatura para los indices de las tablas.
Es decir 6 caracteres para el nombre y los restantes para el numero
de indice empezando por 01 ( 00 esta reservado para la dbf )

tabla : baumov00.dbf
indice 1: baumov01.ntx
indice 2: baumov02.ntx
indice 3: baumov03.ntx

Esta es la unica forma ( que yo conozca ) de relacionar facilmente
los indices con la tabla a la cual pertenecen.

Esta utilidad asume que los nombres de los indices comienzan con los
mismos caracteres que el nombre de la dbf.
Pero como en algunos casos en el lugar donde trabajo no se ha
respetado esa norma es que tuve la necesidad de implementar
la mascara.

Esta sirve para casos en que la nomenclatura es algo diferente.

Ej:

tabla : fcobrado.dbf
inice 1: fcobra01.ntx
inice 2: fcobra02.ntx

En este caso se han utilizado mas de 6 caracteres para el nombre de
la tabla y no se ha utilizado el 00 como caracteres finales.

Por suerte los primeros caracteres son comunes a la dbf y los ntx
Pero como un ejemplo vale mas que mil palabras aqui va uno

Ej:
La extension se asume .dbf

i baumov00 // muestra todos los archivos ntx del directorio actual
// cuyo nombre empieza con baumov
baumov01 nombre
baumov02 str(ci,9) + fecha
baumov03 counter + dtos(fecha)
baumovxx hora

Caso particular ( aca se utiliza la mascara ):

i fcobrado 5 // muestra todos los archivos ntx del directorio actual
// cuyo nombre empiece con fco
fcototos
fcopepes
fcootr23

El parametro nReach es 5 o sea que se van a visualizar todos los ntx
que tengan la siguiente forma fco?????. Asume los primeros 3
caracteres del ntx igual a los primeros 3 caracteres de la dbf,
todos los ntx cuyo nombre empiece con fco son mostrados.

Las disculpas del caso por la poca documentacion de las funciones
Es que despues de una semana de arduo trabajo se me hace dificil
documentar todo, de todas formas cualquier consulta o ampliacion
de la informacion dirigir un mail a la direccion de abajo.

Mas informacion ->
winzip@montevideo.com.uy

Bajate el archivo :
i.prg (12 Kb)

Notas del Gurú: Gabriel se ha convertido en el mayor contribuyente de código de la página, y hasta ha hecho algunos comentarios que me gustó publicar Aqui


(06/Abr/2003) Función para visualizar la estructura de una dbf en la linea de comandos del DOS.
Autor : Gabriel Tarela Gandini.
De : Montevideo - Uruguay

Hay versiones del DBU que no visualizan la estructura de una dbf
cuando se abre compartida y ademas cargan un array con los archivos
dbf y los ntx que hay en el directorio activo para dar la facilidad
al usuario al momento de abrir un nuevo archivo de elegirlos de la
lista y no tener que digitar el nombre.

Esta version del DBU es precisamente la que yo tengo y sucede que
donde trabajo las tablas principales del sistema estan abiertas las
24 horas siempre por algun usuario y en los directorios de trabajo
hay miles de archivos dbf y ntx, asi que al abrir el dbu experimento
una molesta demora de unos 30 a 50 segundos, segun el trafico de red
y el directorio en el cual este trabajando.

Mas informacion -> winzip@montevideo.com.uy

Bajate el archivo :
s.prg (Solo 8 Kb)

Notas del Gurú: Gabriel no para.


(06/Abr/2003) Función que devuelve un numero entero aleatorio en un rango especifico.
Autor : Gabriel Tarela Gandini.
De : Montevideo - Uruguay

Parametros:
nDesde : Margen inferior
nHasta : Margen superior

Devuelve -> Un valor numerico entero aleatorio

Precondiciones:

Debe establecerce los decimales a 16 por lo menos antes de realizar
un llamado a randint() ya que esta utiliza las posiciones decimales
para generar el numero aleatorio.

El parametro nHasta debe ser mayor que nDesde.

Ejemplo:

set decimals to 16 

while lastkey() <> 27 
  inkey(.2) 
  ?randint( 2500,10000 ) 
end 

Mas informacion -> winzip@montevideo.com.uy

Bajate el archivo :
randint.prg (Solo 4 Kb)

Notas del Gurú: Por fin una rutina de "random" seria, muchas gracias Gabriel.


(06/Abr/2003) Función que devuelve el digito de control del numero de documento de identidad de Uruguay.
Autor : Gabriel Tarela Gandini.
De : Montevideo - Uruguay

Parametros:
nDocid : Numero de documento ( cedula de identidad )

Devuelve -> El digito de control como valor numerico

Ejemplo:

?chkdig( 3139951 )
// resultado 5

Mas informacion ->
winzip@montevideo.com.uy

Bajate el archivo : chkdig.prg (Solo 3 Kb)

Notas del Gurú:Tan útil como lo es el programa donado por Adrián Ratti para verificar números de CUIT de Argentina, hoy Gabriel de la ciudad vecina de Uruguay (vecina para nosotros los argentinos), nos trae esta solución para los programadores uruguayos que deseen hacer mas completos sus programas.


(05/Abr/2003) Función para recorrer directorios, pudiendo ser utilizada como "Save..." o como "Save as...".
Autor : Waldo E. Gómez Alvarez
De Valparaíso - Viña del Mar, Chile

Aquí encontré otra cosita que puede ser de utilidad.
Se trata de cw.prg, archivo que contiene una función para recorrer directorios, pudiendo ser utilizada como "Save..." o como "Save as...".
Incluso permite cambiar de drive.
La rutina de recorrido de directorios la puse como muestra dentro de un menú que tiene un editor básico.
Pero como te digo, lo importante aquí es el recorrido de directorios.
Por supuesto, puede ser retocada a conveniencia de quien la obtenga.
Hay que pensar que esto lo hice hace mucho tiempo, y ........ uno en general cree que ahora "piensa mejor"; y si lo hiciera hoy, lo más probable (uno piensa) es que quedaría mejor.
No lo sé. En fin, ahi está para quien lo necesite y quiera modificarlo a su antojo.

Archivo
Edita.zip (65 Kb).


(02/Abr/2003) Objetos radiobutton, checkbox y command button, a la usanza de Windows a grosso modo
Autor : Waldo E. Gómez Alvarez
De Valparaíso - Viña del Mar, Chile

En prueba.ch, que usan el GetSys.Obj al correr "mi" parte de código para
controlar los distintos objetos creados.

Ver esta parte en GetSys.Prg

................
   WHILE !( nPos == 0 )

      // Get next GET from list and post it as the active GET
      PostActiveGet( oGet := GetList[ nPos ] )

      // Read the GET
      IF ( VALTYPE( oGet:reader ) == "B" )
         EVAL( oGet:reader, oGet )    // Use custom reader block
      ELSE
         GetReader( oGet )            // Use standard reader
      ENDIF

      // Move to next GET based on exit condition
      nPos := Settle( GetList, nPos )

   ENDDO
...............


Cuando el objeto oGet:reader es de tipo bloque, se corre el reader de
usuario, o sea el mío.

Archivo : misgets.zip (28 Kb)


(26/Mar/2003) Solución a la lentitud al imprimir bajo Windows.
Enviado por : Gabriel Tarela Gandini
De Montevideo Uruguay

Solución :
Se me ocurrio mandar la impresion a un archivo y despues utilizar el comando run para enviarlo a la impresora.

Set printer To "archivo.txt"

>instrucciones que imprimen

Set printer to
Set print off
Set device to Screen

Run type archivo.txt >lpt1 // ó el puerto que sea

Con esto la impresion se realiza en seguida y no hay que salir del programa.
Se podria decir que esta es una solucion no muy elegante, pero funciona y no he tenido problemas de memoria
por utilizar el comando run aun cuando el exe es bastante grande y ademas abre mas de 170 archivos, tampoco
tuve problemas con los datos.

Espero que pueda servir de solucion al problema para quien planteo la interrogante, ya que este es mi primer aporte y estoy muy emocionado si es que le pueda servir a alguien.

Notas del Gurú: El ingenio popular una vez mas resuelve un gran problema.


(26/Dic/2002) mas de 30 ejemplos con el Tbrowse de Clipper tbluiz.zip (121 Kb)
Enviado por : Walter
De San Francisco, Cordoba,
Argentina.

Descripción : Hay un poco de todo: busqueda incremental, visualizacion de archivos "txt", scopes, colores en las columnas,
arrays, bloqueo en red, semaforos, etc. todo en clipper sin librerias externas Espero sea de tu agrado y que de aqui salgan algunos ejemplos para que el resto pueda utilizar

Notas del Gurú: Excelente código fuente, realmente una ayuda muy útil, muchas gracias Walter.


(26/Dic/2002) Rutina para imprimir códigos de barra Code39.prg
Autor : Adrián E. Ratti
De Buenos Aires,
Argentina.

Descripción : Programa 100% Clipper para imprimir códigos de barra en impresoras matriciales y/o láser.

Notas del Gurú: Cualquier programador se vio en algún momento en la necesidad de imprimir códigos de barras, esta rutina es muy buena puesto que está realizada enteramente en Clipper.


(13/Dic/2002) Validación de C.U.I.T (Argentina) Cuit.prg
Autor : Adrián E. Ratti
De Buenos Aires,
Argentina.

Descripción : La formula que utiliza la A.F.I.P. para validar los números de C.U.I.T. en la Argentina.

Notas del Gurú: Quiero agradecer al señor Adrián por haber donado esta rutina, ya que es muy útil para muchos programadores a la hora de generar A.B.M.'s de clientes.
Por su simple realización puede ser fácilmente migrada a otros lenguajes.


(11/Dic/2002) Clipper Music. Music.zip
Autor : Juan Carlos Ocampo de la Cruz
De Acapulco México.

Descripción : Este simpático programa es una traducción al Clipper muy bien realizada desde el programa original que estaba escrito en GWBasic, adjunto al .PRG de Clipper se incluye un .BAS que corre perfectamente en QBASIC, QUICKBASIC Y TURBO BASIC. El programa original tiene Copyright IBM Corp. 1981, 1982
Esta jurásica rareza toca varias melodías y muestra en un órgano que se dibuja en la pantalla las teclas que están sonando.

Notas del Gurú: Ha hecho un muy buen trabajo Juan Carlos al traducir esta rareza desde el GWBasic, espero que lo disfruten como lo he hecho yo.


(08/Nov/2002) Sistema de nómina Pólux. Parte1 Parte2
Autor : Ramón

Descripción : Excelente código escrito en 1992, posee algunos errores pero individualmente las herramientas que incluye funcionan muy bien, hace uso de algunas librerías, como Nanfor, Class y Arlib (esta ultima no fue incluida por tener Copyright ). El programador utilizó la librería Arlib solo para el manejo del Mouse, Class la ocupó para la programación de objetos Y Nanfor creo que solo para detectar la tecla ALT y CTRL.
Entre 1996 y 1997 retomó el proyecto y le hizo algunas modificaciones

Algunas teclas para usarlo.
ALT = Activa Menu
END = Salir del programa solo en la pantalla principal
F1 = Activa una ventana de captura (lo puse solo para probar las Teclas de Acceso Rapido )
CTRL+Flecha Abajo = Cambia a una ventana abajo en un grupo de ventanas
CTRL+Flecha Arriba = Cambia a una ventana arriba en un grupo de ventanas
ALT+Flecha Abajo = Cambia a un grupo de ventanas abajo
ALT+Flecha Arriba = Cambia a un grupo de ventanas arriba

Notas del Gurú: He quedado anonadado con la calidad de programación de este código, vale la pena echarle un vistazo, siquiera para descubrir lo hábil que ha sido el programador al realizar su trabajo.
Se incluye el .EXE para que lo puedan probar los que no tengan la librería faltante, este programa ha sido revisado por virus y puedo afirmar que no posee ningún virus conocido por un serio antivirus actualizado.

 

Nota: Está sección aún no se encuentra terminada, fue puesta en funcionamiento solo para cubrir las necesidades de los miles de programadores de Ca-Clipper que esperaban una solución como esta.

Esta sección sobre CA-Clipper está coordinada íntegramente por Diego Lucio D'Onofrio


la Luna del Guille o... el Guille que está en la Luna... tanto monta...

Estadísticas desde el 01/Nov/2002 23:15