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 -> [email protected]
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 -> [email protected]
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 -> [email protected]
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
-> [email protected]
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 -> [email protected]
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.
|