Ich komme einfach nicht weiter.
Ich habe eine Klasse TKarte, die so aussieht:
unit UKarte;
Delphi-Quellcode:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls;
type
TTest = CLASS
public
constructor init(pFrage, pAntwort: string);
//und weitere...
end;
implementation
var
Frage,
Antwort:String;
constructor TKarte.init(pFrage, pAntwort: string);
begin
inherited;
//self.schreibeAntwort(pAntwort);
//self.schreibeFrage(pFrage)
end;
//...
end.
Ich erstelle sie so:
Delphi-Quellcode:
procedure TKarteikasten.Laden (
name:
String);
var i,j: integer;
karte1: TKarte;
fach: TFach;
aktDatensatz: KartenTyp;
begin
showMessage('
laden');
Liste:=TList.create;
AssignFile(datei,
name);
if FileExists(
name)
then begin showMessage('
existiert, öffnen'); ReSet(datei)
end
else begin ReWrite(datei); showMessage('
existiert nicht, neu erstellen')
end;
for i:=0
to filesize(datei)-1
do
begin
seek(datei,i);
read(datei,aktDatensatz);
showmessage(aktdatensatz.antwort);
showmessage(aktdatensatz.frage);
showmessage(inttostr(aktdatensatz.fach));
//wird noch ausgegeben
karte1.init(aktDatensatz.frage,aktDatensatz.antwort);
//HIER!!!!
//mit karte1.init('test','test'); das gleiche, liegt also nicht an den Parametern
showmessage('
so far...');
//wird nicht mehr ausgegeben, Access Violation
if aktDatensatz.fach>Liste.count-1
then
begin
for j:=liste.count-1
to aktdatensatz.fach
do begin
Fach:=TFach.create;
Liste.add(Fach);
end;
end;
TFach(Liste[aktDatensatz.fach]).fuegeKartehinzu(karte1);
end;
end;
Wie in den Kommentaren geschildert, wird bis vorher alles ausgeführt, aber beim Erstellen kommt eine
Access Violation.
Folgende Methode funktioniert allerdings einwand frei:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var karte1:Tkarte;
begin
karte1.init('asdf','asddf');
end;
Daraus habe ich zunächst geschloßen, dass es an der Methode laden liegt, aber ich könnte mir nicht vorstellen woran es liegt.
Wäre für Hilfe echt dankbar...
/edit: titel geändert