Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error al dar click en formulario (https://www.clubdelphi.com/foros/showthread.php?t=85624)

jafera 09-04-2014 19:32:29

Error al dar click en formulario
 
1 Archivos Adjunto(s)
Buenas a todos.

Esta semana he instalado por fin el DXE5 con todos los complementos que uso habitualmente Jv, Quickreport y QRDesign, etc.

He convertido un proyecto al nuevo sistema y despues de algunos ajustes, compila y rueda perfectamente, pero al momento de dar click en cualquier botón del programa, me sale el erros que os muestro en la imagen.

Alguien ha topado con algo parecido.

Saludos

Josep

Neftali [Germán.Estévez] 10-04-2014 09:49:29

Hola.
Tal vez tendrías que poner el código que se está ejecutando...
¿Se está ejecutando algún código?

jafera 10-04-2014 09:58:33

Gracias por la respuesta.

El problema es que no se en que punto se produce el error ya que me pasa muchas veces.

Explico un poco el proceso:
He instalado XE5 y sus componentes anexos, luego he abierto un proyecto relativamente pequeño de D6 en el XE5, al compilarlo CNPack da estos errores:

Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.498
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.511
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.499
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.500
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.518
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.499
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.509
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.508
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.499
Exception: Access violation at address 500AAE63 in module 'rtl190.bpl'. Read of address 00000000 at 0.502

pero compila y rula.

Entro en la aplicacion usuario pasword y veo el form principal, luego le doy click a cualquier boton del menu y me salta el error de la imagen del primer mensaje, incluso este error de borrado aparece como 3 o 4 veces. Tambien me aparece el error en el momento de dar click al boton de cierre.

He puesto punto de interrupcion en el create, en el show, en el close, en el detroy y el mensaje con el error aparece siempre y no entro en el modo debug para ver si peta en alguna linea.

No se que código puedo aportar para ver algo de luz

Saludos

Josep

jafera 10-04-2014 10:14:25

A ver si el error puede venir por este código en el close del botón, es lo único que se me ocurre:

Código Delphi [-]
procedure TF_Inici.ToolButton8Click(Sender: TObject);
var FileInfo: TShFileOpStruct;
begin
        if MDIChildCOUNT > 0 then
        begin
                ShowMessage('Hi han finestres obertes, tanca-les totes abans de sortir');
                Abort;
        end
        else
        begin
                FileInfo.Wnd := Handle;
                FileInfo.wFunc := FO_DELETE;
                FileInfo.pFrom := 'C:\Gestio_Arbitral_1.0\Temp\*.jpg';
                FileInfo.pTo := nil;
                FileInfo.fFlags := FOF_NOCONFIRMATION;
                ShFileOperation(FileInfo);

                FileInfo.Wnd := Handle;
                FileInfo.wFunc := FO_DELETE;
                FileInfo.pFrom := 'C:\Gestio_Arbitral_1.0\Temp\*.pdf';
                FileInfo.pTo := nil;
                FileInfo.fFlags := FOF_NOCONFIRMATION;
                ShFileOperation(FileInfo);

                Close;
        end;
end;

Saludos

Josep

jafera 10-04-2014 10:25:52

Después de probarlo, el error está en el código anterior, no se si falta alguna unit o debo actualizar alguna linea a la nueva versión.

Si alguien tiene alguna idea pues será bien recibida.

Saludos

Josep

jafera 10-04-2014 11:03:35

Solucionado

Buscando, buscando he adoptado este código:

Código Delphi [-]
procedure TF_Inici.ToolButton8Click(Sender: TObject);
var SearchRec: TSearchRec;
begin
        if MDIChildCOUNT > 0 then
        begin
                ShowMessage('Hi han finestres obertes, tanca-les totes abans de sortir');
                Abort;
        end
        else
        begin
                if FindFirst('C:\Gestio_Arbitral_1.0\Temp\*.*', faAnyFile, SearchRec) = 0 then
                repeat
                    Deletefile('C:\Gestio_Arbitral_1.0\Temp\'+SearchRec.name);
                until (FindNext(SearchRec) <> 0);
                FindClose(SearchRec);

                Close;
        end;
end;

Gracias a todos

Josep

jafera 10-04-2014 12:15:33

Mi gozo en un pozo.

En un principio funcionaba bien y ahora me da un error de incompatibilidad:

[dcc32 Error] Curses.pas(725): E2010 Incompatible types: 'PWideChar' and 'string'
[dcc32 Error] Curses.pas(727): E2010 Incompatible types: 'NativeUInt' and 'TSearchRec'
[dcc32 Fatal Error] F2063 Could not compile used unit 'Curses.pas'

Me parece a mi que la migración va a ser más dura de lo que pensaba.

Por cierto me sigue lanzando el access violation....

Saludos

Josep

Neftali [Germán.Estévez] 10-04-2014 16:05:38

¿Porqué no ejecutas el código inicial paso a paso y ves en qué línea te está dando el error?
Coloca un Breakpoint al inicio del procedimiento y ejecuta hasta que llegue ahí.

jafera 11-04-2014 09:48:42

Gracias Neftalí.

El breakpoint ya lo puse tal y como comenté en un post anterior.

Lo que me da es un error al compilar el la linea del DeleteFile que es donde dice lo de los tipos no compatibles

E2010 Incompatible types: 'PWideChar' and 'string'

Y así no me deja continuar, comento el trocito de codigo y funciona perfectamente.

Lo mas raro es que en el form principal tengo el mismo codigo en el boton de cerrar (copiar/pegar) y no da error de compilación.
He mirado todos los use, units y no hay ninguno que falte.
Ya no se que más mirar.
El problema del rtl190.bpl, puede venir por un script de CNPack para guardar la fecha y hora de compilacion y guardarlo en una variable para presentarlo en el formulario acerca de.

Gracias y saludos

Neftali [Germán.Estévez] 11-04-2014 09:53:23

Perdón, no había leído esa parte...

Cita:

Empezado por jafera (Mensaje 475049)
Lo que me da es un error al compilar el la linea del DeleteFile que es donde dice lo de los tipos no compatibles

Este error a veces da cuando hay definidas 2 funciones en diferentes units que se llaman igual. Dependiendo de que unit esté cogiendo, te dará el error que te sale a tí.
Para asegurarte de que quieres que coja la de la unit correcta (en tu caso la de SysUtils, creo) basta con que coloques la unit delante de la función.

Código Delphi [-]
    SysUtils.DeleteFile(...

jafera 11-04-2014 10:26:13

Gracias Neftalí.

Como le digo siempre a un compañero que a veces me echa un cable con esto del Delphi, te debo un beso muy grande, jejeje....

Has dado justo en el clavo, por esto comenté de que la migración seria un poco laboriosa ya que debo adaptarme a estas nuevas premisas.

Hay algun libro, manual, link web, etc donde pueda recabar informacion?

Y en relacion al acces violation, alguien tiene un trozo de codigo para poder sacar la fecha y hora de compilacion y colocarlo en el acerca de sin depender del script de CNPack siguiente que es el que utilizo actualmente y no compila bien?

Código Delphi [-]
program Data_CompilacioG;

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

var Lineas: TStringList;

begin
  Lineas:= TStringList.Create;
  try
    Lineas.Add('const DataCompilacioG = ''' + FormatDatetime('dd/mm/yyyy', Now) + ''';');
    Lineas.Add('const HoraCompilacioG = ''' + FormatDatetime('hh:nn', Now) + ''';');
    Lineas.SaveToFile('C:\Gestio_Arbitral_1.0\DataCompilacioG.inc');
  finally
    Lineas.Free;
  end;
end.

O tal vez hay que hacer alguna modificacion es este codigo, no se lo que me parece raro es que cuando abro cualquier proyecto en DXE5 me abre todos los data_compilacio de otro proyectos, cosa que en D6 no sucedia.

Repito, gracias y saludos

Josep

Neftali [Germán.Estévez] 11-04-2014 10:42:14

Cita:

Empezado por jafera (Mensaje 475058)
Y en relacion al acces violation, alguien tiene un trozo de codigo para poder sacar la fecha y hora de compilacion y colocarlo en el acerca de sin depender del script de CNPack siguiente que es el que utilizo actualmente y no compila bien?

Yo para esto, en algunos proyectos, utilizo un ejecutable (GetVersionFile) hecho en Delphi, que lo suelto en el mismo directorio de mi proyecto. Este ejecutable está hecho en muy sencillo y lo que hace es coger la información de un EXE (como parámetro) un generar un fichero de texto con la información de versión en el mismo directorio.

Luego tengo un BAT/CMD que lo llamo cuando me interesa, aunque se podría hacer de forma automátizada después de compilar o linkar.

jafera 15-04-2014 16:11:29

Buenas de nuevo a todos.

Volviendo al tema del script que en D6 funciona de perlas pero no así en DXE5, he descubierto que al compilar, el fichero .inc, desaparece, queda en blanco y no queda ninguna constante grabada.

Alguien lo ha solucionado?.

Es realmente normal este comportamiento?

Supondo que Lineas.Add en un stringlist funciona igual en ambas versiones de Delphi.

Saludos

Josep


La franja horaria es GMT +2. Ahora son las 20:46:43.

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