eine "Invalid Pointer"
Exception kommt unter anderem wenn vesucht wird etwas freizugeben was schon freigeben ist. Wenn du also mit Dispose etc. speicher freizugeben der bereits freigegeben wurde oder nie angefordert wurde. Gibst du eventuell irgendwas bei der Stringliste frei was zu Stringliste gehört. Dann könnte es zu dem Fehler kommen wenn du das Destroy der Stringlist aufrufst.
zu deinem Source:
Delphi-Quellcode:
[...]
var
Form1: TForm1;
alist:TStringList;//<<--
ahashlist: Tstringlist;//<<--
implementation
[...]
procedure TForm1.FormCreate(Sender: TObject);
begin
MemChk;
alist:=TStringList.Create;//<<--
ahashlist:=TStringList.Create;//<<--
end;
Das ist einfach nur gruselig. Wenn du die Stringlist in der Klasse TForm1 erzeugst etc. dann packe die declaration doch auch in die Klasse (in den Private bereich, oder in den Public wenn anderen klassen etc. auch darauf zugreifen)
also so
Delphi-Quellcode:
TForm1 = class(TForm)
[...]
private
alist:TStringList;//<<--
ahashlist: Tstringlist;//<<--
public
published
procedure finddoubles(pfad: string);
{ Public-Deklarationen }
end;
[...]