PREGUNTAS CONTESTADAS - Clipper/FiveWin

 Hay un total de 470 Preguntas.<<  >> 

    Pregunta:  93 - FUNCIÓN QUE EVITE EL CTRL+BREAK
Autor:  Marcos
Estoy realizando una aplicación en Clipper 5.2, y necesito conocer una función que evite el CTRL+BREAK para este lenguaje, si es que existe. Si no existiera ¿cómo lo podría hacer en ensamblador?
Gracias
  Respuesta:  CRISTIAN BRAVOI
hola

Solamente colocas SET CANCAL OFF y listo
que te resulte, adios
  Respuesta:  marco antonio olvera sanchez
con la funcion set cancel off
espero que te sirva..
  Respuesta:  Iván Rodríguez Fernández
SETCANCEL,de la libreria CLIPPER,activa o desactiva la posibilidad de suspender la ejecución de un programa al pulsar Alt + C.
Su formato es:

SETCANCEL([exprL])

exprL: Por defecto toma el valor verdad (.T.) e indica que se puede finalizar el programa;en caso contrario vale False.
  Respuesta:  Hernaldo Alvarez
Esto es muy fácil. Tu quieres que tu aplicación no sea quebrada con Ctrl+C o Crtl+Break. Solo debes poner en las primeras líneas de tu PRG principal loa siguiente:
SETCANCEL(.F.)
El valor .F. desabilita el Ctrl+Break y el valor .T. lo habilita. Cualquier duda sobre Clipper, escríbeme.
  Respuesta:  Vicente
Te adjunto programa altc.prg altc.zip

    Pregunta:  119 - COMO CONSEGUIR FIVEWIN O CLIP4WIN
Autor:  Diego
Quiero saber como conseguir FiveWin o Clip4Win (libreria para generación de aplicaciones en Clipper bajo Windows). Si alguno lo tiene o sabe donde conseguirlo, que me lo haga saber.
  Respuesta:  Marcos Brito
www.fivewin.com Aquí encontraras todo lo referente a FiveWin...
El FiveWin lo puedes comprar en cualquier tienda de cómputo... y sinderamente no se que es Clip4Win..´te agradecería me informaras...
Quiero decirte que además de el FiveWin, necesitarás el bLinker para enlazar tus programas...
  Respuesta:  Juan Reyes
FiveWin se encuentra en www.fivetech.com y posee un servidor de noticias en el cual puedes dejar mensages y hacer preguntas sobre lo relacionado a la adquisición de fivewin por medio de internet.
Clip4Fin era una herramienta de programación al igual que fivewin para que sepas, los creadores de fivewin originalmente eran beta tester de clip4win, después de ser betatesters ellos crearon fivewin.
Clip4Fin fué creado por uno de los trabajadores de CA-Clipper.
  Respuesta:  Juan F. Reina
Tambien existe una direccion en internet llamada www.fivewin.com en la cual podras bajarte algunas librerias. Tambien aprovecho para hacer contactos con gente para intercambio de librerias, preguntas y etc. pero sobretodo intercambio de lib

    Pregunta:  120 - ERROR EN UN PENTIUM DE LA MARCA AMD
Autor:  Agustí
Tengo un programa hecho para Dos con Clipper 5.2, y hasta ahora iba muy bien, pero algun que otro usuario que se ha cambiado recientemente el PC, pro un Pentium AMD, me dice lo siguiente:
Que ahora el programa no les funciona, porque al intentar cargarse les sale el siguiente mensaje:
Runtime error R6003
-Integer divide by 0
y les sale al promp del Dos.
Yo he tenido varios PC´s y actualmente pentiums y me funciona correctamente, asi que no tengo ni idea de lo que ocurre. Quien lo sabe?
Gracias por perder tu tiempo conmigo.
  Respuesta:  EDGP EDGP
En vez de ocupar el RTLINK, usa el BLINKER y asunto solucionado
  Respuesta:  Rodrigo Guerrero
TIENES QUE COMPILAR CON eL PARCHE __wait.obj

rtlink fi (nombre_programa),ctus,__wait lib ct,FIVEPRO

__wait

agregar a tu compilación el parche __wait

mandame tu correo y te lo envio ....
  Respuesta:  Nolberto Paulino
Hola Agusti

tiene que integrar estos Parche OBJ en el Link, para corregir el problema

__WAIT_4 OBJ
__WAIT_B OBJ

Nolberto Paulino
[email protected]
[email protected]
  Respuesta:  Luiso
pagina http:// www.the-oasis.net baja el patch /files/patch/r6003fix.zip
  Respuesta:  Carlos Hormazabal
PARA QUE DARELE VUELTAS AL ASUNTO, SOLO DEBES CAMBIAR TU LIKADOR, POR LO GENERAL PASA CON EL RTLINK, PERO SI USAR EL BLINKER U OTRO PARECIDO PROBLEMA SOLUCIONADO.
  Respuesta:  Jose A Barreiro
El problema al que te refieres no es de programación, es un problema de compatibilidad con procesadores no Intel (por ejemplo el K6) y se resuelve de 2 formas (No mediante programación como he dicho anteriormente).

1.- Utilizando Clipper 5.3b, que incorpora un parche para dichos procesadores.
2.- Descargando un parche para Clipper 5.2 que lamentablemente ahora no recuerdo donde lo he visto, pero creo que está disponible en "The Oasis". De todas formas si lo vuelvo a ver te mandaré otro mensaje.
De momento has de saber que no es problema tuyo.

Un saludo.

  Respuesta:  Nodgard Seguias
Saludos desde Venezuela, tu problema se resuelve ejecutando desde el autoexec.bat un programa denomindo PIPELOOP.EXE diseñano por Ciryx para resolver el bug de su procesador con clipper, en la pagina de http://www.cyrix.com lo puedes bajar o contactame via mail o por medio de mi pagina www.zeus-soft.com y te lo envio en corto, Bye.
  Respuesta:  Alex Rivera Herrera
hola: mi nombre es Alex Rivera Herrera, Chile
La solución a tu problema tiene 2 soluciones :

1.- La primera es concerniente a la incompatibilidad del procesador. Si quisieras optar por esta solución deberias conversar con el proveedor de tu equipo para solución a tu problema.

2.- La otra, existe una libreria que debes incluirla en los compiladores de tu aplicación, esta libreria es efectiva, para las aplicaciones desarrolladas en equipos AMD, el nombre de la libreria es : __wait.obj, esta libreria solamente existe para modo normal y no para aplicaciones que corren bajo modo protegido.

La libreria yo la tengo en mi poder.

  Respuesta:  Juan Carlos
Para no enredarnos mucho seria bueno que se consultara la siguiente dirección:http://cofradia.acer.com.mx/soporte/boletin/boletin_amd.html
  Respuesta:  Mauricio Lara
Não só no processador AMD nas também em todos os equipamentos Pentium II este problema ocorre, mas consegui resolver temporariamente da seguinte forma no AMD K6 , eu entrei no SETUP da máquima e coloquei DISABLE na opcao INTERNAL CACHE com isso logicamente o equipamento ficou mais lento , mas a princípio resolveu o meu problema , aí então foi que eu relacionei o problema com equipamentos que tem CACHE INTERNO, como os processadores Pentium II, isso é um caso sério para que programa em CLIPPER. Acho que com linkando com EXOSPACE resolverá o problema pois este linkador é para rodar o EXECUTAVEL(EXE) em memória alta.

Faça o teste..
Caso voce tenha outra solução me diga..

  Respuesta:  Eduardo Borondon M
Ese problema yo lo tenia y era debido a que estaba usando clipper tools y tenia puesto el reloj de esta libreria, lo desabilite y adios problema, espero te sirva.

Saludos!!!

  Respuesta:  Guillermo
Conozco el tema, pues tuve problemas con los K6 y tambien con los pentium II, en mi caso, se debe a que utlizo ca-tools en mis programas de clipper 5.2.
El problema se presenta, debido a que clipper necesita establecer una variable inicial, al ser yan rapido el procesador la misma queda en cero y al realizar un calculo se produce el famoso error de DIVIDE BY ZERO.
La solución la baje de Oasis y es solo un Archivo OBJ llamado __wait_b.obj, solo lo enlazas en tu arhivo .lnk o en la línea de comandos del rtlink y no tienes nigun tipo de problema. Si quieres enviame un mensaje pidiendomelo a [email protected], aclarandome a que cuenta quires que te lo envia.

    Pregunta:  132 - COMO INSERTAR UN GRÁFICO EN CLIPPER 5.2
Autor:  José
¿Dónde puedo encontrar un tutorial de Clipper en Español?
¿Se pueden insertar gráficos en programas hechos en Clipper 5.2 y, si se puede, en que formato deben estar los gráficos (JPG,GIF,...)
Un saludo.
  Respuesta:  Coyote
Yo poseo unas librerías en español, si estás interesado escríbeme y acordamos como te la envío!
  Respuesta:  Marcos Brito
Existen diferentes utilerías que te permiten usar gráficos en Clipper; checa esta página, ahi encontrarás algunas...
  Respuesta:  Jaime Cohen H.
En realidad yo uso Clipper 5.3 y alguna vez hicimos algo por el estilo, hay algunas herramientas para Clipper 5.2, pero necesito investigarlo con mi colega para comentarselos, pero ahí esta una función en Clipper 5.3 y otra para 5.2 con herramientas...
Func LOGO(_Pv)
_PantLogo:=SaveScreen(0,0,MaxRow(),MaxCol())

*// Para Clipper 5.3.....
Set VideoMode To LLG_VIDEO_VGA_640_480_16
_Bm:=GBmpLoad("GRAFICO.BMP")
GBMPDISP(_Bm)
Inkey(5)
Set VideoMode To LLG_VIDEO_TXT

*// Con SwPaint.Lib librerias para clipper 5.2 //*
v_MA=swsetvmode(-1)
swsetvmode(4)
swgcls()
swpopslide(´TECNASIS.LOG´)
Inkey(5)
swsetvmode(v_MA)

v_TimeLogo:=Time() // Se reinicializa contador de
// tiempo...
RestScreen(0,0,MaxRow(),MaxCol(),_PantLogo)

Retu NIL

  Respuesta:  Philippe Morchain
Si quieres ver imágenes PCX o BMP con Clipper, podrás encontrar en el Oasis (http://www.iag.net/~philb) que es (es MI opinión) el mejor sitio para Clipper, la librería Fern´s Graphic Library. Es freeware y te da muchas posibilidades.
Por lo de JPG, tengo en mi pagina (http://www.chez.com/todoclipper) un EXE freeware que permite ver JPEG y que puedes llamar con RUN, por ejemplo. Si quieres algo mas ´profesional´, creo que tendrás que comprar la LightLib Images Pro de DFL
Espero que te ayude
  Respuesta:  Juan Carlos Gilarranz
Referente al manual de Clipper, yo tengo uno que lo baje hace tiempo de Angel Canudas y que esta bastante bien. Si lo quieres me lo dices y te lo mando
  Respuesta:  JAVIER GONZALEZ
Y lo hago usando una libreria de gráficos llamada PRO50 y PRO52
  Respuesta:  P.J.Arana
Yo tengo una librería realizada en C que te permite poner la pantalla en modo grafico e insertar imagenes PCX. Ponte en contacto conmigo.
  Respuesta:  Alonso Salazar
Yo tengo una libreria que se llama DGE la cual funciona con Clipper 5.2 y esta permite inicializar el ambiente grafico y hacer todo lo que necesites, te lee .BMP y creo que tambien .ICO, hace de todo si la necesitas comunicate con migo y vemos como te la hago llegar.
  Respuesta:  Pepe Corredera
Hay dos modos:
1§.- Usar la libreria Extend del propio Clipper que usa el API del lenguaje C. Con esto puedes hacer un programa en C que luego llamas desde Clipper con las funciones de esta libreria.
2§.- Este es el que te recomiendo yo, si ademas no conoces C y es buscar una libreria de Clipper(Shareware o Public Domain) que contenga funciones para realizar esta tarea

    Pregunta:  158 - BASE DE DATOS EN UN ACHOISE
Autor:  Jorge
Quisiera que alguien me ayudara ya que perdí los apuntes y necesito lo siguiente:
Como puedo desplegar algunos campos de una base de datos en un achoise para mostrarlo por pantalla y selecionar un registro. Yo anteriormente la hacia pero hace años que no programo en clipper y no recuerdo.
Por ejemplo en un progrma de facturas al ingresar un campo de items me despliege en una persina los datos de los articulos, seleccionar un articulo, cerrar la persiana y continuar ingresando los datos de la factura. Yo lo hacia con achoice , pero no recuerdo como lo hacia.
  Respuesta:  José Revoredo
Es preferible que uses TBROWSE. El achoice es para arreglos y está limitado. Aparte que es todo un rollo para que puedas editar el archivo.
El DBEDIT pertenece al summer87 y es sostenida en Clipper 5.x por compatibilidad.
  Respuesta:  Cruz Alfredo Vasquez Ceja
Checa esto que yo utilizo, a ver si te sirve,
declare art[100]
declare can[100]
afill(art,0)
afill(can,0)
do leer // osea una funcion que lea la base de datos y que ponga los valores a los arreglos//

a=1
do while a <= 100
lina = str(art[a])+" "+str(can[a])
a = a + 1
enddo

sele = achoice(5,5,15,70,lina)

do case
case sele ....
apenas estoy aprendiendo clipper, a ver si te pudes comunicar conmigo, icq 36896964
  Respuesta:  Juan Reyes
Una cosa primero, un achoice comprende posiciones de memoria, es decir un arreglo, un achoice siempre tine que ser unidimensional (de una dimensión)
Lo que deberías hacer para poder listar campos de una base de datos es por medio de objetos TBrowse, que te permitiran ahorrar memoria y dar mayor flexibilidad y rapidez a tu aplicación, no así con arreglos ya que existe, y casi siempre que el inventario sea muy grande y quizas exceda los 4096 artículos, si es así, tendrás problemas al tratar de generar arreglos mayores a esta cantidad.
Ve la documentación del achoice.
Pero como lo necesitas :
Local aArticulos := {}
SELECT Inventa
Inventa->( DbGoTop() )
Do While Inventa->( !Eof() )
AAdd( aArticulos, Inventa->Codigo + Inventa->Articulo )
Inventa->( DbSkip() )
EndDo
Achoice( 10, 10, 24, 70, aArticulos )
Lo demás lo vez tú.
Pero te recomiendo utilizar objetos TBrowse.
  Respuesta:  Willser F. González C.
Hay tres formas sencillas de hacerlo.

1. La función ACHOICE se usa para crear opciones de menús emergentes. Entonces:

vRgstros := {}
select NmbreDbf
go top
while !eof()
aadd(vRgstros, sCmpo1 + sC mpo2 + ... + sCmpon);
skip
enddo
nOpcion = Achoice(y1,x1,y2,x2,vRgstros) // Opci¢n del //men£. nOpcion = N£mero de Registro seleccionado. //Tenga en cuenta que no halla filtros.
No olvide que un vector tiene un límite.

2. La función DBEDIT lista una DBF:

set key -2 to LeerCmpo // Activar F3 para seleccionar.
@10,10 say "Cliente" get cClnte Valid LeerCmpo(@cClnte)
read
set key -2 to // No olvide desactivar la tecla.
Function LeerCmpo(cVrble)
vCmpos := {} //Número de los campos a listar.
select NmbreDbf //Seleccionar la DBF.
for i := 1 to fcount() //Agregar campos al vector.
aadd(vCmpos, i)
endfor
dbedit(y1, x1, y2, x2, vCmpos) //Puede llamarse sin //parámetros.
if (lastkey() == 27) // Esc. No seleccionó cliente.
return(.f.)
cVrble := NmbreClnte // O como se llame el campo.
return(.t.)
3. TBROWSE // Parecida al DBEDIT.
Nota: Debe implementar una función que llame al ACHOICE o al TBROWSE al pulsar una tecla de función u otra cuando esté leyendo la variable con SET KET TO parecida a LeerCmpo(...).
Para más información envíame un E-Mail
  Respuesta:  Jose Antonio Holgado Loza
Yo esto lo hago con una DBEDIT sobre la tabla contra la que vas a consultar. Con la función de usuario controlas por ejemplo la pulsación de y al pulsar sales de la DBEDIT y devuelves el campo que te interese del registro actual de la tabla consultada.
Un saludo.

    Pregunta:  176 - PARAMETROS DE LA HP 500 PARA IMPRIMIR EN LEXMARK 7200
Autor:  Claudio
Tengo un serio problema. En el trabajo adquirieron las impresoras LEXMARK 7200, y estas no funcionan con las aplicaciones realizadas en DOS ya que en todas las maquina tengo Windows 95 y yo estoy con Clipper 5.2. Supuestamente el manual dice que en el software hay que usar los parametros de la HP 500C. Si alguien sabe cuales son esos parametros o alguna forma de emular para que esta funcione, se lo agradeceria eternamente, ya que yo seguire buscando por todos lados. Gracias
  Respuesta:  Ricardo Villarroel
Aunque a esta altura hay harta literatura, es igual bueno poner un recordatorio, por si alguien tiene este problema y cae en esta página:
Solución:
1º En el menú de configuración de impresoras del windows, debes compartir la impresora que deseas.
2º Debes crear un batch que se ejecute al iniciarse el windows, este debe decir:

Net Use Lpt1 /Delete
Net Use Lpt1 \MiEquipoImpresoraCompartida /persistent:yes

Donde Lpt1 es donde imprime el clipper
MiEquipo es el equipo donde estoy ejecutando el programa clipper
ImpresoraCompartida es el nombre compartido de la impresora, es decir si la impresora es una LexMark 7200 y le puse como nombre compartido Laser, ese es el nombre que debe ir allí.
Ojo! después de persistent van 2 puntos, antes del yes, los que tienen que ir de todas maneras.
  Respuesta:  MANUEL DIAZGALAN
PARA TODOS LOS QUE TENGA PROBLEMAS A LA HORA DE
IMPRIMIR EN CUALQUIER IMPRESORA.
EL PROBLEMA ESTA EN QUE MS DOS NO RECONOCE LA USB Y
LAS IMPRESORAS NO RECONOCEN MS DOS

YO ME APROVECHO DE WINDOWS Y UTILIZO EL WORDPAD.EXE PARA
IMPRIMIR MIS INFOMES DESDE MS DOS, EJEMPLO

MI CODIGO

SET PRINTER TO DOCUMENTO.DOC
SET DEVICE TO PRINT
SET CONSOLA OFF

????????????????
???????????????? = datos a imprimir
????????????????

set printer to
set device to screen
set console off
run c:\accesorio\wordpad.exe c:\miprograma\documento.doc

esplico:

1 envio los datos en vez de a la impresora a un archivo de texto.doc para que lo lea el wordpad
2 activo el wordpad desde mi programa
3 y cuando lo tengo editado en pantalla ya esta lo puedo imprimir como una aplicacion windows

espero que te ayude.
  Respuesta:  Juan Reyes
http://come.to/jonysoft , Hola amigo yo hace bastantes años tuve el mismo problema y me fascina cuando hago algo (crear, inventar), les pueda servir a otros. Tengo un .CH que hice que te permite controlar el tamañó de la letra, fonts,etc, para esta impresora HP DeskJet 500C, envíame un e-mail solicitándome este archivo y te envío un ejemplo. Si alguien más lo necesita, un simple e-mail y Listo
Desde CHILE un abrazo.

    Pregunta:  183 - ARREGLOS EN CLIPPER
Autor:  Julio
Es una pregunta tan simple que me da pena preguntar. He tenido muchos problemas para manipular los arreglos en Clipper, los indices son un problema. Para ser concretos el siguiente código ejemplo:
File:=MEMOREAD(Archivo)
i:=1
DO WHILE File[i]!=EOF
File[i++]:=File[i]-1
END DO
MEMOEDIT(File,y1+1,x1+1,y2-1,x2-1,.F.)
Me marca el error ´Error de Argumento: array acces´ (en lenguaje C se trata las cadenas como arreglos), como lo soluciono o cual es el problema? Gracias
  Respuesta:  Juan Reyes
http://members.xoom.com/jonysoft http://members.xoom.com/manuales Tu problema amigo es que tratas de ver Clipper como si fuese C o C++, pero existen unas diferencias, una de las cuales es el tratamiento de los arreglos.
La función MEMOREAD no retorna un arreglo, retorna una cadena de caracteres, que será de máximo 65535 caracteres ( 64K ), si el archivo a leer es mayor a esto te dará un error.
Como ejemplo, si deseas recorrer la cadena y mostrarla por pantalla :
Local nI := 1
Local cArchivo := MEMOREAD( "Juan.Txt" )
Local nLargo := Len( cArchivo )
For nI := 1 To nLargo
.. cCar := SubStr( cArchivo, nI, 1 )
.. ? cCar
Next nI
Una cadena de caracteres en Clipper no se trata como un arreglo, sinó como una cadena.
  Respuesta:  Pepo
Me parece que el problema es que inicializas el indice a 1, creo que lo tienes que hacer a 0. El error debe ser que al estar incializado a uno cuando llega al ultimo elemento del vector quiere acceder a una posción mas.
Saludos :-)

    Pregunta:  190 - CARACTERES DE CONTROL PARA IMPRIMIR EN UNA HP670C O HP692
Autor:  Mega
Que tal, necesitaria si alguien tiene los caracteres de control para imprimir desde Clipper 5.2 a impresora HP670C o HP692 con letra chica y apaisada.
Desde ya muchas gracias.
  Respuesta:  Juan Mateluna
enviame un e-mail a [email protected] y te envio un archivo con los códigos, y una pequeña introducción de como usarlos
  Respuesta:  Juan Reyes
Hice hace años un .CH para definir los carácteres de control para una impresora HP DeskJet 500-C, si tu impresora da compatibilidad al lenguaje de una HP-500C te servirá lo que tengo, no lo puedo colocar aquí porque es extenso.
Envíame un e-mail y te lo envío.
Chao amigo
  Respuesta:  Jose A Barreiro
Si quieres ampliar información sobre los códigos de impresión para HP DeskJet lo mejor es que visites la siguiente dirección :
http://www.hp.com/cpso-support/deskjet/tools/pcl3.html
Un saludo.

    Pregunta:  202 - ERROR AL COMPILAR CON CLIPPER 5.2
Autor:  Tomas
Tengo un grave problema al intentar compilar con Clipper 5.2, no me produce el OBJ, sino que sale el siguiente mensaje:
RULES NOT FOUND IN EXE FILE
C:\CLIPPER\BIN\CLIPPER.EXE
Hasta hace unas semanas funcionaba correctamente, lo unico que he hecho desde entonces ha sido instalar el programa Borland C++ 4.0, lo cual no creo que tenga nada que ver.
El problema es muy grave para mi, ya que tengo una aplicación entregada y solamente le faltaban los ultimos retoques clasicos que te pide el cliente. Si alquien sabe a que es debido este problema le agradeceria mucho la solución. Gracias
  Respuesta:  Juan Reyes
Amigo, intentaste instalar de nuevo el Clipper 5.2, lo más seguro es que el archivo Clipper.EXE esté dañado.
Chao amigo
  Respuesta:  Jose A. Barreiro
Me parece que el problema es que compilas y linkas utilizando CL.BAT, que casualmente coincide con el CL.EXE del compilador de C.
Mejor copila a mano utilizando el Clipper prog [/n /l /...] y linka como acostumbres. O renombra la macro CL.BAT de Clipper.
Un saludo.

    Pregunta:  221 - DIFERENCIA ENTRE LOS COMANDOS DE CLIPPER
Autor:  Julio
Quisiera saber cual es la diferencia entre utilizar las funciones que Clipper ofrece con prefijo DB y sus mismos comandos, por ejemplo
DbSeek() con SEEK
DbSkip() con SKIP
DbAppend() con APPEND BLANK
DbGoto con GO
Tengo un libro de Clipper y éste dice que funcionalmente son iguales, entonces si son iguales porqué se implementan dichas funciones?
  Respuesta:  José Revoredo
La diferencia es clara amigo. Los comandos son por compatibilidad de las primeras funciones de clipper con los dbase III y FoxBase. Sin embargo Clipper internamente usa las funciones, también es cierto que si conoces el modo en que Clipper trabaja, podrías sacarle mayor provecho..utilizando las funciones de pre-procesador (modificar comportamiento de comandos originales -> STD.ch). Sin embargo, sugiero que uses funciones y no las cambies pues personalizas demasiado tus programas y para el mantenimiento futuro por otro programador es mas complejo.(No distinguiría un DELETE modificado del original) En verdad tu podrías traducir todo tu Clipper al español también (crear el comando BORRAR en vez de DELETE). Pero por estandarización no es recomendable, te sugiero usar funciones.
  Respuesta:  Gerardo A. Mendoza
Hola:
Espero que mi respuesta te aclare tu duda. Desde la versión 5.0 de Clipper se apostó por un sistema basado en funciones. Si creas un programa y lo compilas con la directiva /p (preprocesador) y revisas el listado .ppo, veras que son puras funciones. Por otra parte, por compatibildad con versiones anteriores y con los programadores de dBase se mantienen los comandos.
Dado que su funcionalidad es exactamente la misma, te recomiendo que uses las funciones, ya que esto te puede dar mayor potencial en la creación de tus propios comandos, psuedofunciones de usuario, funciones de usuario. Revisa el archivo; revisa el archivo STD.CH que se encuentra en el directorio INCLUDE y veras que todos los comandos utilizan el preprocesar para traducirlos a funciones.
Puedes comunicarte conmigo si tienes dudas en mi respuesta. :)
  Respuesta:  Jose Antonio Ramos
La diferencia entre utilizar comandos y funciones radica que dichas funciones pueden ser utilizadas con un alias de alguna area abierta y mediante el uso de comandos no seria posible.
Ejemplo:
Use emision new
use tasas new
do while .not. eof()
emision->(dbskip()) && mueve puntero emision
skip && mueve puntero tasas
enddo
Espero que haya sido claro y es bueno que haya gente que siga utilizando clipper.
  Respuesta:  Juan Reyes
Hola amigo, los comandos por algo existen en clipper, sabes porqué, porque el preprosesador de clipper ( opción /p ) los transformará a su equivalente dependiendo de con que CH se compile ( ojo ).
Es decir, afirmo lo que dijo José Antonio Ramos ( clara bien ) pero discrepo en una pequeña cosa con lo que mensionó Gerardo A. Mendoza en esto :

Te recomiendo usar comandos en vez de funciones, siempre se pueden usar comandos, cuando necesites utilizar un comando especificándole un alias hace para utilizar el comando ZAP :

FUNCTION JrZap()
ZAP
RETURN ( NIL )
para DELETE
FUNCTION JrDelete()
DELETE
RETURN ( NIL )
para PACK
FUNCTION JrPack()
PACK
RETURN ( NIL )

FUNCTION JrSkip()
SKIP
RETURN ( NIL )

así podrás utilizar con esto Clientes->( JrZap() ), Clientes->( JrSkip() ), etc.

Imagina un sistema mono usuario que solamente necesitas compilar y enlazar de nuevo para convertirlo para red. Te creas un .CH y en el defines

#Command DELETE => RLock() ; DbDelete() ; DbUnLock()
si utilizaste en tus sistemas el comando DELETE bastará compilar de nuevo y enlazar y tendras tu sistema corriendo para red (lógicamente con las bases de datos en modo SHARED, etc.) pero si utilizaste la función DbDelete() deberás darte el lujo de cambiar todos tus PRG.
Chao amigo,

|<  <<  1 2 3 4 5 6 7 8 9 10 11  >>  >|