Das Problem besteht beim speichern sowohl beim Abändern eines bestehenden DS als auch beim Anlegen eines neuen DS. Er wirft die Excecption:
---------------------------
ptest2
---------------------------
Zugriffsverletzung bei Adresse 005EDF6D in Modul 'pTest2.exe'. Lesen von Adresse 00000000.
---------------------------
OK
---------------------------
und die daten.dat steht auf 0, ist also futsch.
Es muss doch wohl an der Procedure speichern liegen.
Delphi-Quellcode:
procedure TForm1.speichernClick(Sender: TObject);
var Names: TName;
begin
if FAktuelerIndex > -1
then
Names := FDatalist.Items[FAktuelerIndex]
as TName
// Aktuelles Object bearbeiten
else
Names:=TName.create;
// Neues Object erstellen
try
// Daten aus Controls holen
Names.ID:=strtoint(Edit1.text);
Names.
Name:=edit2.text;
Names.Herkunft:=Edit3.text;
Names.Geschlecht:=checkBox1.Checked;
if FAktuelerIndex = -1
then begin
FDatalist.Add(Names);
// Nur an die Liste Anhängen, wenn neu
FAktuelerIndex := FDatalist.Count-1;
// Auf den letzten Datensatz setzen
end;
FDatalist.SaveToFile('
e:\Test\daten.dat');
// Speichern
ZeigeDaten;
// Könnte man auch sparen, nur zur Sicherheit ;)
except
on E:
Exception do
ShowMessage(E.
Message);
end;
hängt das evtl mit FAktuelerIndex -Werten zusammen? Wert -1 - lege neuen Datensatz an? Index 0 ist der erste DS.
wäre ein FDatalist.Insert hilfreich?