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...
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)