Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - [gelöst]Fehlermeldung beim Befehl TStrings.loadFromFile


Tilo - Mo 12.04.04 14:51
Titel: [gelöst]Fehlermeldung beim Befehl TStrings.loadFromFile
Ich verwende an einer Stelle in meinen Programm den Befehl

Delphi-Quelltext
1:
PfadBox1.Items.LoadFromFile('CDFIP_pfade.con');                    

PfadBox1 ist als TListBox deklariert. Diese Stelle ist in der Datei CDFIP_Einstellungen.pas.
Hier kommt noch kein Fehler. an einer anderen Stelle verwende ich folgenden Befehl:

Delphi-Quelltext
1:
searchList.LoadFromFile('CDFIP_pfade.con');                    

Diese Stelle ist in CDFIP.pas.
searchlist ist als TStrings deklariert, aber trotzdem erhalte ich jetzt die Meldung:
"Zugriffverletzung bei Adresse 0047DC4B in Modul 'CDFIP_projekt.exe'. Lesen von Adresse 00000000" :!:

was mache ich da falsch :?: , denn beide Befehle sind identisch und bei beiden kommt vorher nichts bedeutendes.
Ich hoffe ihr könnt helfen.
Hier der Link auf die Dateien [http://www.nrg.to/fishhead/CDFIP.zip]


Keldorn - Mo 12.04.04 14:58

Hallo

da fehlt ein create;

Delphi-Quelltext
1:
searchlist:=TStringlist.create;                    

im oncreate der Form, wenn die searchlist die ganze zeit benötigt wird, sonst lokal. Das searchlist.free nichrt vergessen, um das obejkt wieder am ende freizugeben

Mfg Frank


toms - Mo 12.04.04 14:58

Delphi erlaubt es, sogenannte »abstrakte Klassen« zu deklarieren. Eine
abstrakte Klasse ist eine Klasse, bei der bestimmte (virtuelle) Methoden nicht
implementiert, sondern nur deklariert sind; die Implementation erfolgt
dann durch Nachfahren. Deshalb sollte man nicht direkt Instanzen von
abstrakten Klassen erzeugen, sondern nur von nicht-abstrakten
Nachfahren.


Ein Beispiel für eine abstrakte Basisklasse ist TStrings:

Die Methoden, die sich um das eigentliche Speichern von Strings
kümmern, sind als abstract deklariert. Die Nachfahren von TStrings
überschreiben diese Methoden und implementieren das Speichern.
TStringList z.B., indem es den Speicher selbst verwaltet, der von
TListBox verwendete TStrings-Nachfahre wird die Strings mit
LB_*-Messages im Windows-ListBox-Control speichern.

Ein EAbstractError wird ausgelöst, wenn eine als abstract deklarierte
Methode (die ja keine Implementation besitzt) aufgerufen wird.


Tilo - Mo 12.04.04 15:04

Danke für die Hilfe.