Hi,<p>
da in meinem Programm Probleme mit TStringList auftreten, habe ich ein Mini-Programm geschrieben, um zu testen, ob der Fehler<br>
dort ebenfalls auftritt.<p>
<pre>
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
sl: TStringlist;
begin
try
sl := TStringlist.Create;
sl.Add('Test');
finally
sl.Free;
end;
end;
end.
</pre><p>
Nun zu meinem Problem:<br>
Ich debugge das Programm zeilenweise ab "sl := TStringlist.Create;" und überwache dabei "sl". Vor dem TStringlist.Create steht<br>
bei sl[0] "Zugriffsverletzung bei 00700465 und Zugriff auf 00700465", was ja noch einleuchtet, da sl noch nicht existiert.<br>
Nach dem Create steht bei sl[0] "Delphi-Exception EStringListError bei $3CEF969". Erwartet hätte ich "nil".<br>
Nach Add steht korrekt "Test" dort, und nach Free wieder die erste Meldung.<br>
Trace ich das Programm weiter und führe das "end." nach Application.Run aus, bekomme ich eine Fehlermeldung "EAccessViolation".<br>
Starte ich das Programm direkt danach ein weiteres Mal, kommt manchmal, aber nicht immer, eine Schutzverletzung.<br>
Kann mir jemand dieses Verhalten erklären und mir sagen, was ich falsch mache? Danke im voraus.<p>
Grüße, Reimund
da in meinem Programm Probleme mit TStringList auftreten, habe ich ein Mini-Programm geschrieben, um zu testen, ob der Fehler<br>
dort ebenfalls auftritt.<p>
<pre>
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
sl: TStringlist;
begin
try
sl := TStringlist.Create;
sl.Add('Test');
finally
sl.Free;
end;
end;
end.
</pre><p>
Nun zu meinem Problem:<br>
Ich debugge das Programm zeilenweise ab "sl := TStringlist.Create;" und überwache dabei "sl". Vor dem TStringlist.Create steht<br>
bei sl[0] "Zugriffsverletzung bei 00700465 und Zugriff auf 00700465", was ja noch einleuchtet, da sl noch nicht existiert.<br>
Nach dem Create steht bei sl[0] "Delphi-Exception EStringListError bei $3CEF969". Erwartet hätte ich "nil".<br>
Nach Add steht korrekt "Test" dort, und nach Free wieder die erste Meldung.<br>
Trace ich das Programm weiter und führe das "end." nach Application.Run aus, bekomme ich eine Fehlermeldung "EAccessViolation".<br>
Starte ich das Programm direkt danach ein weiteres Mal, kommt manchmal, aber nicht immer, eine Schutzverletzung.<br>
Kann mir jemand dieses Verhalten erklären und mir sagen, was ich falsch mache? Danke im voraus.<p>
Grüße, Reimund
Comment