Ir al contenido


Foto

[RESUELTO] ¿Qué significan estos errores en Delphi?


  • Por favor identifícate para responder
9 respuestas en este tema

#1 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 03 septiembre 2010 - 10:08

Bueno ultimamente estoy ejecutando una aplicación lo pruebo a ver si no hay errores todo está bien al parecer ,pero después al ejecutarlo me aparece primero este error cuando va a iniciar.

Project Project1.exe raised exception class EStackOverflow with message 'Stack over flow'.

luego que le doy a continuar de todos modos me aparece el siguiente.

Project1.exe fauled with message 'access violation at 0x004098e6:write of address 0x000304c0.
Process stopped. Use sep or run to continue.

luego me envia a una pantalla de códigos asm etc.


  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 03 septiembre 2010 - 10:20

Revisa el manejo de memoria. Componentes no creados. Punteros usados sin apuntar a nada válido. Destrucciones de objetos y/o punteros inválidos...

Saludos.
  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 03 septiembre 2010 - 10:21

Recorre paso a paso el programa y fijate en que linea salta ese error
  • 0

#4 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 03 septiembre 2010 - 10:25

Pues el error "Stack overflow" suele producirse, entre otras causas, cuando una función se llama a si misma de forma descontrolada.

Por ejemplo:


delphi
  1. procedure test(i: Integer);
  2. begin
  3.   test(i);
  4. end;



En el ejemplo anterior la funciona se llama a si misma hasta desbordar la pila.

No confundir con una función recursiva:


delphi
  1. procedure test(i: Integer);
  2. begin
  3.   if i > 0 then
  4.     test(i-1);
  5. end;


Esto es legitimo, ya que tarde o temprano se sale del bucle, todo depende de si se sale antes o después de desbordar la pila  :D

En resumen, busca algo parecido en tu código, y corrigelo
  • 0

#5 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 03 septiembre 2010 - 11:33

Recorre paso a paso el programa y fijate en que linea salta ese error


eduarcol este error me sale desde que leo los ini , me dijiste ayer que no se solucionaba abriendo y cerrando delphi ya que por un momento corrio bien es cierto,pero ahora sigue con el access violation.

no uso nada fuera de lo normal inicio el lector del ini al crear el form y para editarlo en un boton , puede estar el error involucrado con ese acto.
  • 0

#6 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 03 septiembre 2010 - 12:09

Coloca un poco de codigo de como lees los INI a ver que podemos hacer
  • 0

#7 bigleaguer

bigleaguer

    Advanced Member

  • Miembros
  • PipPipPip
  • 66 mensajes

Escrito 03 septiembre 2010 - 12:10

Saludos.
Amigo fijate en lo que dice seoane, ya que este excepción se produce normalmente por recursividad infinita ó como dice seoane: "cuando una función se llama a si misma de forma descontrolada".
Fijate tambien en la ruta del archivo ini que estas leyendo. Si puedes coloca el código para que podamos ayudarte mejor.
  • 0

#8 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 03 septiembre 2010 - 12:17

Saludos.
Amigo fijate en lo que dice seoane, ya que este excepción se produce normalmente por recursividad infinita ó como dice seoane: "cuando una función se llama a si misma de forma descontrolada".
Fijate tambien en la ruta del archivo ini que estas leyendo. Si puedes coloca el código para que podamos ayudarte mejor.



delphi
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, StdCtrls,inifiles;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     Edit1: TEdit;
  12.     Edit2: TEdit;
  13.     Edit3: TEdit;
  14.     Edit4: TEdit;
  15.     Button1: TButton;
  16.     procedure FormCreate(Sender: TObject);
  17.     procedure Button1Click(Sender: TObject);
  18.   private
  19.     { Private declarations }
  20.   public
  21.     { Public declarations }
  22.   end;
  23.  
  24. var
  25.   Form1: TForm1;
  26.  
  27. implementation
  28.  
  29. {$R *.dfm}
  30.  
  31. procedure TForm1.Button1Click(Sender: TObject);
  32. var
  33. ini:Tinifile;
  34. begin
  35. ini.Create('C:\base.ini');
  36. ini.WriteString('Basededatos','localhost','');
  37. ini.WriteString('Basededatos','usuario','');
  38. ini.WriteString('Basededatos','contraseña','');
  39. ini.WriteString('Basededatos','port','');
  40. ini.Free;
  41. end;
  42.  
  43. procedure TForm1.FormCreate(Sender: TObject);
  44. var
  45. ini:Tinifile;
  46. begin
  47. ini.Create('C:\base.ini');
  48. edit1.Text:=ini.ReadString('Basededatos','localhost','');
  49. edit2.Text:=ini.ReadString('Basededatos','usuario','');
  50. edit3.Text:=ini.ReadString('Basededatos','contraseña','');
  51. edit4.Text:=ini.ReadString('Basededatos','port','');
  52. ini.Free;
  53. end;
  54.  
  55. end.


  • 0

#9 bigleaguer

bigleaguer

    Advanced Member

  • Miembros
  • PipPipPip
  • 66 mensajes

Escrito 03 septiembre 2010 - 12:26

A simple vista el problema esta en que no estas instanciando la clase TIniFile.

Reemplaza:



delphi
  1. ini.CReate('c:\base.ini')



por



delphi
  1. ini := TIniFile.Create('C:\base.ini');



El código deberia de quedar asi:



delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var
  3.   ini: TiniFile;
  4. begin
  5.   ini := TiniFile.Create('C:\base.ini');
  6. try
  7.   edit1.Text:=ini.ReadString('Basededatos','localhost','');
  8.   edit2.Text:=ini.ReadString('Basededatos','usuario','');
  9.   edit3.Text:=ini.ReadString('Basededatos','contraseña','');
  10.   edit4.Text:=ini.ReadString('Basededatos','port','');
  11.   finally
  12.     ini.Free;
  13.   end;
  14. end;



Espero te sirva. A mi me funciono bien.
  • 0

#10 Master23

Master23

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 230 mensajes
  • LocationSanto Domingo

Escrito 03 septiembre 2010 - 12:31

A simple vista el problema esta en que no estas instanciando la clase TIniFile.

Reemplaza:



delphi
  1. ini.CReate('c:\base.ini')



por



delphi
  1. ini := TIniFile.Create('C:\base.ini');



El código deberia de quedar asi:



delphi
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. var
  3.   ini: TiniFile;
  4. begin
  5.   ini := TiniFile.Create('C:\base.ini');
  6. try
  7.   edit1.Text:=ini.ReadString('Basededatos','localhost','');
  8.   edit2.Text:=ini.ReadString('Basededatos','usuario','');
  9.   edit3.Text:=ini.ReadString('Basededatos','contraseña','');
  10.   edit4.Text:=ini.ReadString('Basededatos','port','');
  11.   finally
  12.     ini.Free;
  13.   end;
  14. end;



Espero te sirva. A mi me funciono bien.

Muchisimas gracias amigo,exactamente diste con el problema muchas gracias de nuevo.
  • 0




IP.Board spam blocked by CleanTalk.