FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Error al abrir tabla en Winxp, pero en Win98 funciona, por que?
Hola foro, tengo una aplicacion realizada en delphi 5 y que utiliza tablas en paradox 7 . He estado leyendo distintos hilos sobre paradox en red y he llegado a generar el siguiente codigo:
Código:
const ENV_TEMP: PChar = 'TEMP'; ENV_TMP: PChar = 'TMP'; type Talias= Record ano: integer; nombre: string[50]; end; var Fprincipal: TFprincipal; alias: Talias; Archivoatm: File of Talias; procedure TFprincipal.configuracionred(); var temp: PChar; nombre,carpeta: string; begin //para solucionar problemas de impresion del qreport //con windows2000 y xp. //Con estas Lineas se corrigue el error que se daba con los //listados grandes. //El problema es por que la ruta del directorio //temporal es muy larga y con esto la acortamos //El directorio debe existir y en el se guardaran los distintos ficheros //temporales que genera la aplicacion cuando realiza consultas a las tablas. TEMP:= Pchar(ExtractFilePath(ParamStr(0))+'TEMPORAL'); SetEnvironmentVariable(ENV_TMP, TEMP); SetEnvironmentVariable(ENV_TEMP, TEMP); //Definir el directorio Privado y el Net //El directorio privado "privatedir" contiene los ficheros *.LCK--> (LOCK) //Archivos de bloqueo, se crean en cuanto un usuario edita un registro, //contiene la información de qué registros está modificando un usuario, //se creena en el directorio que indiquemos en "PrivateDir". Este directorio //debe estar de forma local, en cada maquina. Session.PrivateDir := ExtractFilePath(ParamStr(0)) + 'PRIV'; //El directorio "Net" contien al fichero *.NET --> Archivo que contiene //los usuarios que estan accediendo a las tablas, por eso es MUY importante //que todas las PCs apunten al servidor. Se crea, logicamente en la carpeta //previamente compartida NETFILEDIR. Es decir, este directorio debe estar //en el servidor. //buscamos el alias seleccionado. AssignFile(archivoatm,ExtractFilePath(ParamStr(0))+'Datos\ALIAS.DAT'); Reset(archivoatm); while not eof(archivoatm) do begin try read(archivoatm, alias); except on exception do begin showmessage('Fallo de lectura del alias.'); abort; end; end; if fprincipal.aliasnombre.text = inttostr(alias.ano) then nombre:= alias.nombre; end; closefile(archivoatm); carpeta:=DBGetPathAlias(nombre); //ruta del servidor. Session.NetFileDir:= carpeta+'\NET'; //definimos el el BDE si el programa esta en modo cliente (datos en otro eq.) //"LOCAL SHARE = FALSE" o esta en modo servidor (datos en el eq.) //"LOCAL SHARE = TRUE". carpeta:=ExtractFilePath(ParamStr(0))+'Datos\NET'; if DirectoryExists(carpeta) then //estamos en el servidor begin LocalShareTrue(); end else begin //estamos en el cliente. LocalShareFalse(); end; end; //Esta funcion necesita en los uses a: Registry // Function sets the "LOCAL SHARE" registry setting // to TRUE in the BDE (32-bit BDE only). procedure TFprincipal.LocalShareTrue(); var Reg : TRegistry; const BDE_LOCAL_SHARE_KEY = '\Software\Borland\Database Engine\Settings\SYSTEM\INIT'; begin Reg := TRegistry.Create; With Reg Do begin Access := KEY_READ or KEY_WRITE; RootKey := HKEY_LOCAL_MACHINE; { Write the BDE keys } OpenKey(BDE_LOCAL_SHARE_KEY, True); WriteString('LOCAL SHARE', 'TRUE'); end; Reg.Free; end; //Esta funcion necesita en los uses a: Registry // Function sets the "LOCAL SHARE" registry setting // to FALSE in the BDE (32-bit BDE only). procedure TFprincipal.LocalShareFalse(); var Reg : TRegistry; const BDE_LOCAL_SHARE_KEY = '\Software\Borland\Database Engine\Settings\SYSTEM\INIT'; begin Reg := TRegistry.Create; With Reg Do begin Access := KEY_READ or KEY_WRITE; RootKey := HKEY_LOCAL_MACHINE; { Write the BDE keys } OpenKey(BDE_LOCAL_SHARE_KEY, False); WriteString('LOCAL SHARE', 'FALSE'); end; Reg.Free; end; Este codigo lo ejecuto antes de crear el datamodule que contiene todas mis tablas. El codigo lo ejecuto y va perfectamente (creo yo). Independientemente que la aplicacion este instalada en win98 o en winxp. El problema esta en el momento que habro una tabla, ya que si lo hago desde el servidor no me da ningun tipo de problema, pero si lo hago desde el cliente me da el siguiente: Cita:
En el servidor tengo instalado win98 y en cliente winxp. Ya he probado a reparar la base de datos con sysutil y TUtility, pero ambas utilidades me dicen que las tablas estan bien. Haber si alguien puede hecharme una mano. Gracias.
__________________
El saber no ocupa lugar. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Conexion de base de datos en win98 y winxp | monicasierrar | Conexión con bases de datos | 6 | 25-05-2005 19:54:51 |
Paradox en Red con WinXP y Win98 | EstebanWeb | Conexión con bases de datos | 17 | 11-03-2005 18:10:58 |
Capturar el usuario de WinXp y Win98?? | danytorres | API de Windows | 1 | 25-01-2005 22:08:21 |
Mi Exe no funciona en Win98 | pcicom | OOP | 3 | 13-12-2004 16:43:38 |
Al llevar .dpr de WinXP a Win98 no existe .dpr y problema nombres archivo largos | images | Varios | 2 | 10-09-2004 23:25:27 |
|