PREGUNTAS CONTESTADAS -

 Hay un total de 470 Preguntas.<<  >> 

    Pregunta:  244 - ARCHIVOS .CH
Autor:  Cristian
Disculpen si la pregunta es un poco tonta pero soy principiante en clipper y todavia no entiendo muchas cosas de este lenguaje, y una de ellas es para que son los archivos *.ch todavia no lo entiendo, ojala tengan paciencia conmigo y me puedan ayudar a integrarme a este lenguaje. Gracias
  Respuesta:  Juan Reyes
Crea un archivo llamado MisDef.Ch que contenga :
#Define ID_COPYRIGHT "Juan Reyes 1998"
#Define ID_VERSION "2.3.1"
#Define PRIMERO 1
#Define SEGUNDO 2
Crea un .PRG llamado Menu.Prg y coloca :
#Include "MisDef.Ch"

FUNCTION Main()
..... @ 10, 10 SAY "Sistema desarrollado por " + ID_COPYRIGHT + " Versión : " + ID_VERSION
RETURN ( NIL )

Con esto cada vez que clipper encuentre ID_VERSION te la reemplazara por "2.3.1"

Crea un programa llamado menu2.prg y coloca :

#Include "MisDef.Ch"
FUNCTION Main()
Local aDato := { 10, 20 } // Arreglo de dos posiciones e inicializado con un 10 en la primera posición y un 20 en la segunda posición.

@ 10, 10 SAY aDato[ PRIMERO ] // Aqui PRIMERO será reemplazado por el número 1
@ 11, 10 SAY aDato[ SEGUNDO ] // y SEGUNDO se reemplazara por el número 2

RETURN ( NIL )

Los .Ch tambien se utilizan para crear comandos pero eso ya es muy avanzado, empieza practicando, creando tus propios .CH.
Chao amigo, :-) Juan Reyes
  Respuesta:  Gerardo A. Mendoza
Hola Camarada:
A cerca de tu duda sobre los archivos .CH míralos como facilidades para hacer tus programas más potentes. Estos archivos son como de "sustitución" en tus programas, con lo cual puedes hacer más fáciles tus programas para darles mantenimiento, para hacerlos a tus gustos.
Por ejemplo, el famoso Impuesto sobre el Valor Agregado (IVA), que en México es el 15% del Subtotal de una cantidad. Si codificas varias líneas (10 por ejemplo) en un sistema como la que sigue:
nImp_IVA := Importe * 0.15
cuando cambie el porcentaje a 10%, supon; tendrás que buscar en todos tus programas esta línea, ... PERO ...Si codifcas un archivo .CH
CONSTANT.CH
#define IVA 0.15
y en tus programas
Programa.prg
#include "constant.ch"
..
nImp_IVA := nImporte * IVA
cuando cambie el porcentaje del iva SOLO modificas CONSTANT.CH
#define IVA 0.10
recompilas y no tienes que preocuparte de nada más.

Utiliza mayúsculas para tus constantes.

Compilas tus programas con el modificador /P y revisa el archivo .PPO que produce para que compares el contednido de éste con tu original (.PRG)

En lo que pueda sequir ayudándote, no lo dudes.:-)

    Pregunta:  245 - MENSAJES CON ACHOISE
Autor:  Julio
Tengo dos dudas sobre CLIPPER, no se si haya alguna manera de Poner mensajes en una barra de estado del tipo PROMPT ... MESSAGE, la funcion ACHOICE se utiliza para menus del tipo POP UP y no se si se puedan declarar mensajes como lo mencione o si hay alguna forma.

La segunda duda es si alguien sabe como cambiar las coordenadas del texto que sale al presionar la tecla INS (que sale en la coordenada 0,60 aprox) y el de FECHA INVALIDA que sale en la misma coordenada. De antemano gracias

  Respuesta:  Vicente
1- parte, La funcion ACHOICE, no tiene las propiedades del PROMPT, Pero puede hacer un Array, con las entradas y mensajes, Luego trabajar com PROMPT.
2- parte, se puede suprimir la salida en 0,60 con SET SCOREBOARD OFF luego hacer una funcion que displaye los mensajes donde quiera en combinacion de la propiedad VALID del GET.
  Respuesta:  Gerardo A. Mendoza
Hola:
Duda-1: En la versión Clipper 5.3x puedes colocar este tipo de mensajes al leer datos, botones, listas con el objeto Get. Además no es muy claro que quieres hacer con los mensajes; yo por ejemplo utilizo Prompt y Message para los menúes, lo que mencione arriba para entrada de datos y la función Alert() de Clipper (ligeramente modificada)para mensajes de error, selección Si/No, Continuar/Cancelar/Reintentar. AChoice() lo veo más orientado a manejo de datos (menúes, listas)

    Pregunta:  249 - MOUSE EN CLIPPER 5.2, Y CODIGO DE BARRAS
Autor:  Santiago
Necesito alguna libreria para mouse en Clipper 5.2, se que ya la version 5.3 lo incluye pero ahora por cuestiones economicas no esta a mi alcance adquirir la nueva version, si alquien me tira una mano, yo tengo varias librerias para graficos pcx, y sonidos(.voc),ademas de varias funciones, que al que le interese le puedo ceder sin cargo, otra cosa que me interesaria es introducir una lectora de codigo de barras en mis aplicaciones, pero jamas he usado una, creo que el programa lo toma como una entrada de teclado normal, pero como no poseo una y no se si se conecta directamente al teclado o no, agradeceria informacion al respecto. Gracias y nos estamos viendo.Chau
  Respuesta:  César Augusto Gálvez
un lector de barras se conecta en el puerto del teclado y el teclado a una bifurcación de los cables del lector, el lector de barras funciona como si fuera teclado con la funcion GET asigna a la variable asociada la cual debe ser de tipo cadena, funciona como si fuera nativo, es elemental usarlo en realidad
  Respuesta:  Vicente
Comunicate conmigo, que tengo algunas rutinas para el Ratón que te puedo pasar.
Respecto a lo de las barras, se conectan al puerto Serie, y con unas librerias, funcionan como el teclado. Tengo pensado poner una entrada de barra a uno de mis programas, a lo mejor me animo y lo hacemos juntos.
  Respuesta:  Gerardo A. Mendoza
Hola:
Respecto a las librerias, con gusto te puedo enviar una copia de NanFor.lib de dominio público que tiene Nanforum. Si no, utiliza tu buscador para localizar el sitio de Nanforum, la verdad no lo recuerdo. Además hechale un vistazo a estos sitios:
http://www.sourcesite.simplenet.com/Frames.html
http://www.jaring.my/cch/clipper/

Con respecto a la lectora de código de barras, en la empresa donde laboro se tienen dos no se que marca porque no la tienen, la conexción es muy senccilla, porque se tiene un adatador para conectárse al DIM del teclado, una entrada serie para la lectora y otra DIM para el teclado. Con esto se puede leer código de barras o teclear datos, finalmente es una entrada de datos. Al programa no le tienes que hacer absolutamente nada, ya que si utilizas la lectora lee el código llenando con los datos el campo/variable de entrada, incluso te toma como si oprimieras ENTER. Obviamente es recomendable hacer unas pruebas antes de.

  Respuesta:  Juan
Para la impresión de codigos de barras la casa Danisoft comercializa una libreria, las cual es bastante facil de utilizar, ya que se utiliza como una funcion a la cual le pasa una serie de parametros como: tipo de impresora, codigo de barra a imprimir, tipo de codigo de barra, etc.

Con relación a la lectura de codigos de barra en los programas te recomiento los que se conectan al teclado, ya que los conectados al puerto serie te obligan a incializar el puerto en el autoexec.bat, asi como cargar algun que otro drive en memoria, (con la consiguiente perdida de memoria disponible) y la mayoria de estos drives al final lo que hacen es redirigir lo que recibe la maquina por el puerto serie hacia el teclado, conclusion (POR TECLADO NO POR PUERTO SERIE)

  Respuesta:  Nodgard Seguias
Enviame tu dirección e mail, tengo una libreria llamada LD52 que estoy seguro que resolvera tu problema, es facil de implementar
http://www.zeus-soft.com
  Respuesta:  Mauricio Lara
Eu tenho a versão Clipper 5.3 e estou lhe enviando as libary para o uso com mouse e código de barras, apesar de que existem impressoras próprias para a emissão dos códigos de barras tipo ZEBRA/Alegro etc... encontradas aqui no Brasil, trabalho com Automação Comercial e espero poder te ajudar, e que sabe podemos trocar algumas experiencias. ok..

Meu nome é Mauricio , moro na cidade de Araraquara,estado de São Paulo-BRASIL.

Abraço e até logo...

    Pregunta:  257 - IMPRESORA REMOTA WIN95 NO EJECUTA PROG. EN DOS
Autor:  Hector
Tengo una red en windows 95 y operando con windows no tiene problemas, pero no puedo imprimir en una impresora remota ejecutando un programa en DOS, ya que me toma siempre el puerto local aun teniendo a una impresora remota como predeterminada y ejecutando desde windows.
Mis programas en DOS estan en Clipper Summer 87.
Desde ya muchas gracias. Saludos
  Respuesta:  Juan Reyes
Hola amigo, nunca he utilizado summer 87 ya que empecé desde la versión 5.2.

El comando SET PRINTER TO te permite colocar un nombre de puerto, por ejemplo

SET PRINTER TO LPT1 ó SET PRINTER TO LPT2
etc.

La impresora desde windows está bien que la hayas dejado como predeterminada, pero capturaste la COLA de impresión ?
Ve a MIPC, panel de control, impresoras, elije la impresora, haz click con el botón derecho del mouse, elije propiedades y selecciona la lengueta DETALLES, has click en el botón CAPTURAR PUERTO DE IMPRESORA.
Elije el dispositivo, la ruta de acceso a tu impresora y has click en el check box CONECTAR DE NUEVO AL INICIAR SESION. unicia una nueva sesión y verás que capturaste la cola, ahora tus programas de DOS deberían de imprimir redireccionando la impresión a este puerto. que no siempre debe de ser LPT1.

Chao amigo

  Respuesta:  Andrés González
Teclea en el prompt de DOS antes de ejecutar tu programa:
NET USE LPT1: \\NOMBRE DE PC\NOMBRE DE IMPRESORA
Donde "NOMBRE DE PC" es el nombre de la PC que tiene la impresora y "NOMBRE DE IMPRESORA" es el nombre que le asignaste al momento de compartirla.

Espero te sirva...

    Pregunta:  264 - CREACION DE INDICES CON DBCREATEINDEX()
Autor:  Carlos
Como puedo generar con la función DBCreateIndex() las siguientes instrucciones:
Index on DTOS(fechaing) to I2obrero
*Fechaing es un campo de la base de datos con formato de fecha
index on AppAterno+ApMaterno+Nombre to i3obrero
AppAterno, ApMaterno y Nombre son 3 compos de la base de datos

Agradezco cualquier comentario o sugerencia al respecto.
Gracias

  Respuesta:  Juan Reyes
Hola amigo, :-)
Compila tu prg con la opción /P, y te generará un archivo .PPO, revísalo y te darás cuenta como se transformó tu comando INDEX a la función DbCreateIndex().
Modifica tu prg colocándole cláusulas FOR a los INDEX y preprocesa denuevo con /P, ve que obtienes.

Chao amigo

    Pregunta:  269 - BUSQUEDAS DE CARACTERES EN CLIPPER
Autor:  Julio
Hola, tengo dudas si clipper aportara ya una rutina para realizar busquedas en una base de datos de la siguiente manera: Aparece una lista desplegable de Nombres (por ejemplo) ordenados alfabeticamente y Un cuadro de texto en el cual el usuario pueda introducir el nombre de una persona pero que al momento de ir tecleando la lista desplegable se fuera actualizando alfabeticamente conforme digita. Por ejemplo si teclea una letra P, que aparcezcan en la lista ahora los que empiecen su nombre con P.
Y si no la hay, como puedo hacerla?. De antemano gracias y hasta luego :-)
  Respuesta:  Victor Palma
Hola, si ya solucionaste tu problema de la busqueda, exelente sino,
yo tengo una rutina utilizando dBedit, en la que busca no solo letras sino tambien espacios en planco y signos, si te interesa avisame a mi correo.
  Respuesta:  jose manuel gonzález
puedes hacerlo de la siguiente forma

dentro de un case
formo=space(20)
tecla=upper(Chr(lastkey()))
Do while tecla>"A" .or. tecla < "Z"
formo= formo+tecla
Seek formo
enddo

me parece que es asi, lo que pasa es que ya tiene rato que utilice esto y ahorita no tengo ningun programita pero si todavia te sirve el lunes te lo traigo ya completo si te urge escribeme
  Respuesta:  Mauricio Espinosa
Hola. Aqui te escribo un programa que realiza lo que necesitas.
USE Base.Dbf INDEX Nombre.Ntx
C:=""
K:=0
SET SOFTSEEK ON
DO WHILE .T.
K:=0
DBEDIT( 5 , 10 , 20, 70 )
@ 2,10 SAY " Introdusca Nombre :"
K:=INKEY(0)
IF K = 27
EXIT
ENDIF
C:=C+CHR (K)
SEEK C
ENDDO
SET SOFTSEEK OFF
Te Explico: Nombre.Ntx es tu base de datos indexada por el nombre.
El SET SOFTSEEK ON indica que cuando realice una busqueda de datos, busque lo mas parecido.
Te Explico : El programa al ejecutarce pasa por el DBEDIT muestrando la base de datos indexada por el nombre, luego se detiene en el K=INKEY(0), (el INKEY(0) espera hasta que se presione una tecla para continuar, retornando el valor de la tecla presionada en ASCII). Luego pasa por el C=C+CHR(K), que va transformando el valor de la letra en ASCII ( Variable K) en caracter y sumandola a la variable C, Despues al realizar el SEEK C, busca lo que contiene C , llevando el puntero de la base de datos hacia el nombre que mas se parece a C y retorna al DBEDIT y INKEY nuevamente para pedir la otra tecla que será sumada a C y realizar la siguiente busqueda.
La pregunta "IF K = 27"... es para salir del ciclo cuando presiones la tecla Escape.
Una vez fuera del ciclo "DO WHILE", se vuelve el SET SOFTSEEK a su estado inicial.

Espero que esto te sirva de ayuda

Chao, Compañero

  Respuesta:  Juan Reyes
Hola amigo, la utilización de DBEDIT ya está obsoleta, para ello CA ha pusto en nuestro amado clipper la clase TBrowse, la desventaja de DBEdit con respecto a TBrowse es que DBEDIt es un consumidor de memoria y lento por lo demás.

Con objetos TBrowse ganarás en tus aplicaciones flexibilidad, mucha rapidez y un gran ahorro de memoria, es un poquito dífícil pero vale la pena aprenderlo, el porque, porque cuando desarrolles sistemas para un entorno windows con una herramienta que te permita hacer aplicaciones para este entorno veras mucho de clases y objetos.

Asi que amigo, ánimo e incorpórate al mundo actual, las herramientas obsoletas.... chao con ellas

  Respuesta:  Alonso Salazar
Claro que si, si hay algo que no puedas hacer con clipper es porque no se puede hacer. Yo lo hago asi:

1- Tengo una base de datos con los registros que deseo.
2- Construllo un objeto TBrowse, como es un objeto puede hacerlo como me de la gana.
3- Dentro de un ciclo tomo en InKey(0).
4- Tengo una variable donde voy introduciendo las teclas que han presionado y le hago un seek al valor que tenga la variable.
5- Le envio el mensaje RefreashAll al TBrose y listo.

Si quieres un programa de ejemplo avisame.

    Pregunta:  270 - RUTINA PARA CONTROLAR LOS ACCESOS AL ARCHIVO
Autor:  JuanCarlos
Como podria hacer una subrutina que me controlase los ultimos accesos a un determinado fichero, tiempo y lo que han realizado sin utilizar claves.
  Respuesta:  Juan Reyes
Hola, Para controlar los accesos al archivo, hora, fecha y que se hizo, si se modificó, agregó, eliminó, debes controlarlo cuando grabas en todas las secciones de tu sistema.
Puedes crear en cada base de datos tres campos :

Usuario N 3
Hora C 5
Estado C 1 // M Modificado I Ingresado E eliminado, etc.
FechaEst d 8 // fecha que representa cuando se hizo el cambio de estado
con esto en cada registro sabrás que se hizo y la hora.

La otra idea es llevar una base de datos con un historial.
Usuario N 3
Hora C 5
Fecha D 8
descripcion C 20

Cada vez que crees, modifiques o elimines un registro tendrás que grabar en este historial todos los datos. en la descripción puedes colocar :
Borró F/435435
ingresó cliente 123037871
mod nota 234324
http://members.xoom.com/jonysoft
http://members.xoom.com/manuales

  Respuesta:  Gerardo A. Mendoza
Hola: A manera de ayuda te puedo decir que tienes dos opciones:
1) Crear un archivo de texto en el cual graves los datos que te interesan. La rutina debe abrir y/o cerrar el archivo. Es como imprimir en un archivo en vez de una hoja. Posteriormente puedes imprimirlo, revisarlo, borrarlo, lo que quieras.
2) Creo que es mucho mas sencilla esta opción. Utiliza una tabla (.dbf) con los campos de acuerdo a lo que requieras. Cuando accesen al archivo, ejecuta la rutina que graba en la tabla los que requieres. Después revisas, imprimes depuras, lo que quieras. Como idea, se me ocurre lo siguiente:
Procedure Accesos(cTabla, cAccion, dFecha, cHora)
If dFecha == Nil
dFecha := Date()
EndIf
If cHora == Nil
cHora := Time()
EndIf
// Puedes validar acceso en una red
Append Blank
tabla := cTabla
accion := cAccion
fecha := dFecha
hora := cHora
// Si es en red desbloquea regiostro
Espero que te sirvan las ideas.:-)

    Pregunta:  273 - COMO FUNCIONA EL SET RELATION
Autor:  Alexis
Hola amigos soy yo de nuevo dando lata, tengo el siguiente problema , Tengo Dos Bases de Datos llamdas X y Y necesito que en un DBEDIT aparecan 5 Campos de la Base X, pero el campo 4 es la clave de algun articulo de la Base Y ahora bien mi pregunts es ¿ Hay algun manera que con el Set RELATIOn se pueda hacer eso?
Ejemplos
Datos en la Base X:
Clave Descripcion
1 Linea Blanca
2 Linea de muebles

Datos en la base Y:
Clave Descripcion Clave_linea
001 Lavadora 456 1
002 refrigerador X 1

Bueno Cuando haga un Dbedit a mi base Y, necesito que aparezca la descripcion de la linea 1, Diran Bueno pues guardala en la otra base, pues no puedo , imaginenese que tengo como 400 lineas como con mas de 5000 articulos, se va a tardar un monton, y mejor asi las relaciono y nadamas despliego informacion, ademas que tambien es un relajo a la hora de que hacen un cambio a la descripcion de la linea, tendria que cambiar a todas en la otra base
Saludos

  Respuesta:  Javier Albo
Es incorrecta la afirmación de que el usar SET RELATION con tablas en red y miles de registros el programa se pone muy lento si no tienes una máquina rápida. A diario tengo la posibilidad de trabajar con 2 tablas relacionadas en un entorno de red con mas de 60 puestos de trabajo. Una de estas tablas tiene 14 MILLONES de registros y la otra tiene 24 MILLONES y SET RELATION no produce el problema que se menciona.

[email protected]

Atte.
  Respuesta:  Gerardo A. Mendoza
Hola: Sabes, usar DBEdit es OBSOLETO, tienes que cambiar a usar TBRowse porque es más flexible y potente, además de que te adentras en OO (Objetos).
En lo personal nunca he usado Set Relation en los desarrollos que he realizado, lo he sustituido por una rutina de búsqueda que me hace la "relación", ya que a final de cuentas hace lo mismo Set Relation. Te muestro como:
Function Busca(cClave, nPosCampo, nIndice)
Local nIndAnt, xValor, cTipo

// Valores por defecto si no los pasan
if nPosCampo == Nil; nPosCampo := 0; End
if nIndice == Nil; nIndice := 1; End

nIndAnt := PonIndice(nIndice) //indice de búsqueda
DBSeek(cClave)
If nPosCampo > 0 // un campo en particular
If Found()
xValor := FieldGet(nPosCampo)
Else
cTipo := ValType(FieldGet(nPosCampo))
If cTipo == [C]; xValor := [S/desc]
ElseIf cTipo == [N]; xValor := 0
ElseIf cTipo == [D]; xValor := CtoD([00/00/0000])
ElseIf cTipo == [L]; xValor := .f.
Else
xValor := []
EndIf
EndIf
Else
xValor := Found()
EndIf
PonIndice(nIndAnt)
Return( xValor )

Function PonIndice(nIndice)
// Esta rutina pone como activo un índice en
// especial y retorna el índice que estaba.
Local nIndAnt := IndexOrd()
DBSetOrder( nIndice )
Return( nIndAnt )

Como puedes ver esta rutina puede tener varias aplicaciones, dependiendo de su uso:
If ARTICULO->( Busca(cCveArt) ) // Buscar clave
// Encontre el artículo
EndIf

// Obtiene la descripción en un objeto TBRowse
oCol := TBColumn([Desc. Articulo], {|| ARTICULO->( DETFACTURA->faccveart, 2)})

// Busca sobre el Indice 3 (por Grupo)
If ARTICULO->( Busca(cGpoArt,, 3))
cGrupo := ARTICULO->grupo // deja el apuntador y dispongo de todos los campos
Else
// Error en grupo
EndIf

Como ves, esta rutina hace más versátil muchas cosas en el desarrollo de sistemas.
Espero que te sirva. Cualquier duda avísame. :-)
  Respuesta:  Juan Reyes
Aqui vá,...
USE X NEW EXCLUSIVE
INDEX ON X->Clave TO X1
USE Y NEW EXCLUSIVE

SELECT Y
Y->(DbGoTop())

// Si lo haces on objetos TBrowse :

oTb := TBrowseDB( 1, 1, 24, 78 )
...oTb:addColumn( TbColumnNew( "CODIGO" , {|| Y->Clave }))
...oTb:addColumn( TbColumnNew( "DESCRIPCION", {|| Y->Descripcion }))
...oTb:addColumn( TbColumnNew( "LINEA" , { || IIF( X->( DbSeek( Y->Clave_Linea )), X->Descripcion, Space( 20 ))})
.
.
.

// si lo haces con DBEdit ( no te lo recomiendo )
Local acColumnas := { "Y->Clave", "Y->Descripcion", " IIF( X->( DbSeek( Y->Clave_Linea )), X->Descripcion, Space( 20 ))")
USE X NEW EXCLUSIVE
INDEX ON X->Clave TO X1
USE Y NEW EXCLUSIVE

SELECT Y
Y->(DbGoTop())

DBEDIT( 1, 1, 24, 78, acColumnas, . .. .. . .. )

aunque hace años que no uso dbedit, la idea está.

No te recomiendo usar SET RELATION ya que en entornos de red y con artos registros, 5 mil como dices tu se te podrá lentísimo, si tienes una máquina rápida te salvas, pero si no ?.

Si ves la NG de clipper 5.2e te darás cuenta que DBEDIT tiene un asterisco al lado derecho del nombre de la función, que significa esto, que DBEDIT ESTA OBSOLETO, a si que a aprender objetos TBRowse, ganarás velocidad, un gran ahorro de memori y flexibilidad.

Chao amigo,
http://members.xoom.com/jonysoft
http://members.xoom.com/manuales

    Pregunta:  278 - IMPRESION CONDENSADA CON LA EPSON ESTYLUS
Autor:  Alexis
Lo que pasa es que estoy terminando un sistema en Clipper 5.2 pero al usuario le asignaron una impresora epson stylus 400 y necesita imprimir en letra condensada, ya cheque en el manual y no vienen nada de los codigos de impresion
De antemano Saludos a todos
  Respuesta:  Miguel Angel
Hola, tengo buenos programas que te pueden servir para tus sistemas, son muy profesionales.
Para tu duda utiliza:
@0,1 SAY Chr(27)+'!'+Chr(4)+'textooooooo'

En lugar de chr(4), puedes utilizar:
0 tamaño 10
1 tamaño 12
2 proporcional
4 condensado
8 enfatizado.
.....esta en los manuales de impresoras fx-1170
Miguel
  Respuesta:  Juan Reyes
Probaste con los carácteres normales de impresión, como si se tratase de una IBM compatible.
Comunmente estas impresoras tienen dos modos : Epson o IBM Compatible, en que modo tienes la impresora, si está en modo EPSON, cámbialo por modo IBM Compatible.

Vé si es compatible con el PCL de las HP, si es así avísame ya que tengo los códigos para una HPDeskJet

Chao amigo

  Respuesta:  Guillermo
Me paso algo similar. Entre a la web de Epson y alli me entere por la seccion FAQ que esta impresora no imprime en modo condensado. Suerte.

    Pregunta:  279 - COMO GENERO UN ARCHIVO CON EXTENSIÓN "NG"
Autor:  Toni
Necesito saber urgentemente como generar un archivo con extensiín ´ng´ para poder añadirlo como una base de datos para consultarlo con el ng.exe del Clipper 5.2
Tengo un archivo de texto y me gustaria pasarlo a este formato para tener una pequeña ayuda, gracias por todo.
  Respuesta:  Rodrigo Iturrieta
Hola:
Para poder crear archivos con extansión "NG", necesitas de las utilidades "NGC.EXE" y "NGML.EXE". Teniendo estos archivos está todo bien, primero te hacs un archivo "TXT" para luego compilar con "NGC", que te genera archivos "NGO" (obj), teniendo estos "NGO" procedes a linkear con "NGML" y al fin tendrás un archivo "NG".

Si alguien necesita estos utilitarios me envía un E-Mail y se lo envío, talvez lo ponga aquí en el apartado de Utilidades.
  Respuesta:  Anthony Paulino
hola, soy anthony te quiero informar que tu devieras usar una base de dato para la ayuda y puedes abril un memo que tepermite digitar hasta 200k en un memo, si quires mas informacion enviame tu respuesta de mi propuesta a mi email y podemos intercanbiar programas te voy a esperar.
  Respuesta:  Juan Reyes
Un archivo NG ( Norton Guide ) es como un archivo HLP, estos NG se generan ya sean con un compilador Norton Guide o con Expert Help, expert help es muy bueno y rápido, posee un compilador y un descompilador con el cual puedes tomar por ejemplo los Ng de Clipper, decompilarlos, modificarlos y volverlos a compilar, trae manual para crear tus NG, trae un visualizador de NG para dos, yo tengo un visualizardor de NG para windows, hecho por la empresa dueña de expert help.

Escríbeme si necesitas conocer expert help!

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