Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Problema ejecutable Delphi 2009 DBExpress Windows XP (https://www.clubdelphi.com/foros/showthread.php?t=81088)

DagariK 08-10-2012 21:48:18

Problema ejecutable Delphi 2009 DBExpress Windows XP
 
Buenas Tardes a todos,

verán tengo un problema con un ejecutable que tengo compilado en Delphi 2009 que a mi modo de ver parece que tiene que ver con una dll que me hace falta distribuir en el cliente

La aplicación se ejecuta correctamente en Windows 7 y Server 2008, pero en Windows XP y Windows Server 2003 no abre. Internamente la aplicación usa una conexión con DBExpress cuando el motor que usan en las instalaciones de los clientes es ORACLE por lo cual adjunté la DLL dbxora.dll por ser el driver de dicho motor, y como lo mencioné antes, en Windows 7 abre perfectamente, pero en windows xp genera una excepción de memoria, he buscado algo al respecto por ahí en la red pero nada no encuentro.

El error aparece al dar doble click sobre la aplicación.

Espero puedan ayudarme

Gracias

gatosoft 09-10-2012 18:04:16

Asumiendo que pueda ser una DLL, se me ocurre ahora Midas.dll, que es necesaria cuando no utilizas la unidad MidasLib... esto si estas utilizando ClientsDatasets y Providers en tu aplicación...

Creo que nos falta mas información para poder ayudarte...

un saludo,

DagariK 26-10-2012 20:11:20

gracias gatosoft por tu respuesta, en realidad si dejé el post muy abierto, pero bueno ya monté una maquina virtual con windows XP y monté todo lo necesario,

entonces haciendo seguimiento al código encontré que el error se genera en la siguiente unidad de Indy10

IdCharsets.pas

en la siguiente linea

Código Delphi [-]
initialization
  for cset := Low(TIdCharSet) to High(TIdCharSet) do
    IdCharsetNamesLower[cset] := LowerCase(IdCharsetNames[cset]);
end.

al hacer el for muere

así que actualicé la versión de Indy10 a la versión 4850 que es la que se encuentra en la página del proyecto, pero el error ahora aparece en una nueva unidad

IdHeaderCoderBase.pas

en la siguiente linea

Código Delphi [-]
initialization
  GHeaderCoderList := TIdHeaderCoderList.Create; //EXACAMENTE AQUÍ
finalization
  FreeAndNil(GHeaderCoderList);

dicho objeto está declarado de la siguiente manera dentro de dicha unidad

Código Delphi [-]
var
  GHeaderCoderList: TIdHeaderCoderList = nil;

realmente aquí quedé estancando, no sé que hacer, sigue generando la misma excepción de memoria

espero me puedan ayudar, les agradezco de antemano

Al González 26-10-2012 23:57:22

Podría ayudar ver cuál es el mensaje exacto de la excepción. Cuando aparezca dale Ctrl+C (eso lo copiará al portapapeles).

Saludos.

DagariK 01-11-2012 21:02:29

hola muchas gracias, lo siento no poder estar al tanto del post, pero bueno aquí dejo un pantallazo y el error que está saliendo exactamente

Cita:

First chance exception at $7C81EB33. Exception class EAccessViolation with message 'Access violation at address 00401CAD in module 'KMenu125.exe'. Read of address 0000003C'. Process KMenu125.exe (976)

Al González 02-11-2012 19:08:01

"Read of address 00000..." indica que se está intentando leer el contenido de una ubicación de memoria cercana a 0, señal de que probablemente se tenga por ahí un objeto Nil (0), una variable sin inicializar.

El depurador te señala la línea que muestras, pero es realmente un código más interno el que está causando el error. Para intentar ver cuál es ese código haz lo siguiente:

Paso 1. Marcar la opción "Use Debug DCUs" en las opciones del proyecto (en las versiones más recientes de Delphi tal opción está un poco escondida, pero sí que viene).
Paso 2. Compilar con la opción "Build" para que reconstruya el ejecutable considerando esa opción.
Paso 3. Ejecutar y repetir el escenario del error; cuando éste ocurra, el depurador te indicará un punto más cercano al error, si no es que el "mero mero".

Como algo adicional, considera que la parte del mensaje que dice "Access violation at address 00401CAD in module KMenu125.exe" te está diciendo en qué lugar se produjo el error. Usando la opción de menú Find Error puedes pedirle al depurador que te localice la unidad y línea de código que corresponde a la dirección 00401CAD, incluso antes de que el error ocurra (siempre que el programa esté en ejecución).

Saludos.

Al González.

DagariK 08-11-2012 00:05:17

Gracias Al Gonzalez, te comento que voy a revisar tus observaciones, el tema resulta que la aplicación no se alcanza a ejecutar, es decir, encontré el error iniciando la depuración con F8 e iterando con F7, hasta que llegué a esa línea de código.

Seguiré tus instrucciones y cuando tenga el resultado te comentaré que hallé.

Gracias

DagariK 09-11-2012 21:15:02

hola, Al Gonzalez hice lo que me indicaste y ahora el error sale, luego de la linea anterior sale en esta línea



Gracias

DagariK 16-11-2012 20:24:25

lo que aun me sigue pareciendo muy extraño es porque en Windows 7 funciona perfectamente, alguna sugerencia?


La franja horaria es GMT +2. Ahora son las 15:56:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi