Seas,
Delphi-Quellcode:
procedure TFmain.AddFileToSL(filename:string);
var
id:P_TID3Tag;
TID:TID3Tag;
begin
TID:=TID3Tag.Create;
id^:=TID; // vorher hatte ich das mal so: "id:=@TID" - ging auch nicht
if TID.ReadTag(filename) then begin
self.SL_Path.Add(filename);
self.SL_point.Add(inttostr(integer(id)));
with self.SG_1 do begin
Cells[0,RowCount]:=ExtractFileName(filename);
Cells[1,RowCount]:=TID.Titel;
Cells[2,RowCount]:=TID.Artist;
Cells[3,RowCount]:=TID.Album;
RowCount:=RowCount+1;
end;
end else
begin
TID.Free;
end;
end;
Delphi-Quellcode:
destructor TFMain.destroy;
var
i:integer;
id:P_TID3Tag;
TID:TID3Tag;
begin
for i:=0 to self.SL_Point.count do
begin
id:=P_TID3Tag(strtoint(self.SL_Point.Strings[i]));
TID:=id^;
TID.free;
end;
self.SL_Path.Free;
self.SL_Point.Free;
inherited destroy;
end;
Der Fehler kommt im Destructor .. ist irgendwas mit adresse nicht auslesbar oder so...
achja ich hab den code jetzt minimal modifiziert (den destructor), konnte es aber nicht mehr testen da nun überall in meinem programm andere fehler auftauchen, nachdem ich mehrmals die fehler meldung beim destructor bekommen hab (speicher iwie voll geschrieben oder wat?^^), vll geht mein restlicher code morgen nach nem reboot wieder ...
Also im groben speichert meine procci da oben einfach nen pointer als integer als string in ner stringlist und dieser wird später wieder als string als integer geladen und versucht wieder als pointer die variable wiederherzustellen
falls ich hier iwas an pointern falsch verstanden habe so ..