Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi InvalidPointer-Error mit Tstringlist (https://www.delphipraxis.net/29216-invalidpointer-error-mit-tstringlist.html)

quirks 5. Sep 2004 22:00


InvalidPointer-Error mit Tstringlist
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin, ihr Delphianer!

Erstmal hoffe ich, in die richtige Kategorie gepostet zu haben, bin grad erst dazugekommen.

Hier mein Problem:

Mein Programm läuft und funktioniert, aber sobald ich es beende, erzeugt es einen Invalid Pointer-Error. Ich habe mir "Memcheck" heruntergeladen und herausgefunden, dass es irgendwo an den Stringlists hängt (Bericht ist im Archiv). Weiß aber nicht, woran es eigentlich hängt.

Zum Programm: Es soll ein/mehrere Verzeichnis(se) nach doppelten Dateien gescannt werden, anhand von Hash-Werten, die in "ahashlist" gespeichert werden. Da es aber jetzt schon Probleme bereitet, bin ich noch nicht sehr weit.

Wenn ihr könnt, bitte helft mir!

Danke schon mal im Voraus.

SirThornberry 5. Sep 2004 22:05

Re: InvalidPointer-Error mit Tstringlist
 
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;
[...]


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz