[RESUELTO] ¿Qué significan estos errores en Delphi?
#1
Posted 03 September 2010 - 10:08 AM
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.
#2
Posted 03 September 2010 - 10:20 AM
Saludos.
#3
Posted 03 September 2010 - 10:21 AM
#4
Posted 03 September 2010 - 10:25 AM
Por ejemplo:
procedure test(i: Integer); begin test(i); end;
En el ejemplo anterior la funciona se llama a si misma hasta desbordar la pila.
No confundir con una función recursiva:
procedure test(i: Integer); begin if i > 0 then test(i-1); 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
En resumen, busca algo parecido en tu código, y corrigelo
#5
Posted 03 September 2010 - 11:33 AM
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.
#6
Posted 03 September 2010 - 12:09 PM
#7
Posted 03 September 2010 - 12:10 PM
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.
#8
Posted 03 September 2010 - 12:17 PM
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.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,inifiles; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var ini:Tinifile; begin ini.Create('C:\base.ini'); ini.WriteString('Basededatos','localhost',''); ini.WriteString('Basededatos','usuario',''); ini.WriteString('Basededatos','contraseña',''); ini.WriteString('Basededatos','port',''); ini.Free; end; procedure TForm1.FormCreate(Sender: TObject); var ini:Tinifile; begin ini.Create('C:\base.ini'); edit1.Text:=ini.ReadString('Basededatos','localhost',''); edit2.Text:=ini.ReadString('Basededatos','usuario',''); edit3.Text:=ini.ReadString('Basededatos','contraseña',''); edit4.Text:=ini.ReadString('Basededatos','port',''); ini.Free; end; end.
#9
Posted 03 September 2010 - 12:26 PM
Reemplaza:
ini.CReate('c:\base.ini')
por
ini := TIniFile.Create('C:\base.ini');
El código deberia de quedar asi:
procedure TForm1.FormCreate(Sender: TObject); var ini: TiniFile; begin ini := TiniFile.Create('C:\base.ini'); try edit1.Text:=ini.ReadString('Basededatos','localhost',''); edit2.Text:=ini.ReadString('Basededatos','usuario',''); edit3.Text:=ini.ReadString('Basededatos','contraseña',''); edit4.Text:=ini.ReadString('Basededatos','port',''); finally ini.Free; end; end;
Espero te sirva. A mi me funciono bien.
#10
Posted 03 September 2010 - 12:31 PM
Muchisimas gracias amigo,exactamente diste con el problema muchas gracias de nuevo.A simple vista el problema esta en que no estas instanciando la clase TIniFile.
Reemplaza:
delphi
ini.CReate('c:\base.ini')
por
delphi
ini := TIniFile.Create('C:\base.ini');
El código deberia de quedar asi:
delphi
procedure TForm1.FormCreate(Sender: TObject); var ini: TiniFile; begin ini := TiniFile.Create('C:\base.ini'); try edit1.Text:=ini.ReadString('Basededatos','localhost',''); edit2.Text:=ini.ReadString('Basededatos','usuario',''); edit3.Text:=ini.ReadString('Basededatos','contraseña',''); edit4.Text:=ini.ReadString('Basededatos','port',''); finally ini.Free; end; end;
Espero te sirva. A mi me funciono bien.