Page 1 of 1

FICHEROS .MEM

Posted: Tue Oct 13, 2009 2:56 pm
by LuisPonce
Hola Antonio

Estoy pasando a xHarbour, y tengo un problema al abrir un VARIABLES.MEM, en este file guardo las variables que contienen los nombre y de las tablas FIL01:="CLIENTES", fil02:="ARTICULOS".....

Entonces cuando al momento de hacer el RESTORE FROM VARIABLES me da el siguiente error :

Restore failed, unsupported type: 65475 for: 'FIL01'

Maestro Antonio podria ayudarme ? o existe alguna otra funcion que realice este proceso, o es mejor usar un fichero .INI, cuales seria las implicancias en cuanto a Memoria

Gracias

Re: FICHEROS .MEM

Posted: Wed Oct 14, 2009 2:52 am
by albeiroval
Luis,

Mejor usa un archivo INI...

Asi no dependeras de la aplicacion y podras cambiar las variables
en el momento que deses sin tener que cambiar el codigo fuente...

Usa las siguientes funciones de xHarbour...

Dir_Aplicacion = "C:\Cualquier_carpeta"
cFileIni = "cualquier_nombre.ini"

IF File( Dir_Aplicacion + cFileIni )
hIniData := HB_ReadIni( Dir_Aplicacion + cFileIni )
IF Valtype( hIniData["MAIN"] ) == "H"
Variable ..1 = hIniData["MAIN"]["Variable..1"]
.....
ENDIF
ELSE
hIni := Hash()
hIni["MAIN"] := Hash()
hIni["MAIN"]["Variable..1"] := "Asignas el valor que le quieras dar"
HB_WriteIni( Dir_Aplicacion + cFileIni, hIni, "; Inicio de Archivo", "; Final de Archivo" )
ENDIF


Espero Te siva...

:idea:

Re: FICHEROS .MEM

Posted: Sat Oct 17, 2009 4:03 am
by LuisPonce
Gracias Albeiro

Ya hice un .ini para mi aplicacion, mo me quedaba otra, pero tengo una duda :

Solia guardar en variables los nombres de mis tablas, FIL01:="ARCHIVO1",FIL02:="ARCHIVO2" y si es un terminal, apuntar a la ruta del servidor FIL01:=cRuta+"\ARCHIVO1" y estas variables deben estar disponibles en toda la aplicacion, entonces debo pornerlas como publicas, entonces me parece un escandalo tener mas de 60 variables como PUBLIC, es esto admisible ? estoy con el temor que en cualquier momento la aplicacion colapse.

DONDE ENCUENTRO ESAS FUNCIONES HB_......

Gracias por tu respuesta

Re: FICHEROS .MEM

Posted: Tue Oct 20, 2009 3:07 pm
by albeiroval
Luis,

Yo uso una array para todas las variables en mis aplicaciones,

ARCHIVO DE CABECERA <CH>
// Array de Variables
MEMVAR aVarPublics

// Definicion de Variables
#define VARIABLE...1 aVarPublics[ 1 ]
#define VARIABLE...2 aVarPublics[ 2 ]
.......
#define VARIABLE...n aVarPublics[ n ]

......
#define LEN_AVARS <Numero de variables>

EN LA APLICACION :

aVarPublics = ARRAY( LEN_AVARS )

LUEGO LEES EL ARCHIVO INI Y ASIGNAS LAS VARIABLES

VARIABLE...1 := hIniData["MAIN"]["Variable...1"]
......

ALLI ESTAS USANDO SOLO UN APUNTADOR A UN ARRAY QUE CRECERA
DE ACUERDO AL NUMERO DE VARIABLES QUE ASIGNES...

OTRA OPCION ES USAR LA CLASE "TPUBLIC" QUE HACE ALGUN TIEMPO VI EN EL FORO...

SOBRE LAS FUNCIONES HB_XXXX ... SI ES EL CODIGO EL QUE NECESITAS .. NO
SE SI ESTE EN LAS CONTRIB DE XHARBOUR...

Espero te sirva,

Saludos,

Re: FICHEROS .MEM

Posted: Tue Oct 20, 2009 3:11 pm
by ADBLANCO
Aunque no es recomendable, Te aseguro que si lo soporta,
De todas formas, DefĂ­nelas como MEMVAR en un archivo .ch para que no tengas que definirlas en todos los prg (Basta con un #INCLUDE)