Einzelnen Beitrag anzeigen

EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
414 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Mit savetoFile/loadfromFile Daten ins Formular bringen

  Alt 26. Nov 2018, 16:31
ich war in der Zwischenzeit nicht untätig und habe mir die ganze Sache nochmals durchdacht.
Ich muss darauf hinweisen, dass ich ein Anfänger und vermutlich ein lausiger Programmierer bin, doch ich mache das einfach für mich und habe
Freude daran, wenn mir was gelingt. Das nur vorweg, damit etwas Verständnis für meine naiven Fragen in eure Gedult und die Antworten einfließen können.
Ja nun zum Anliegen selbst: ich habe die Form und die logic jeweils in eine unit verpackt. Auch die variablen sind private gesetzt.
Zur logic - was will ich erreichen:
- Applikation wird gestartet;
- nach Button Daten laden wird der erste Datensatz in den edit-Feldern angezeigt (ID,Name,Herkunft,Geschlecht)
- Button clear löscht die angezeigten Daten; vermutlich muss ich jedoch die Daten auch freigeben und nicht nur im Form löschen;
- Neuer Datensatz anlegen Daten werden eingegeben, Button Speichern betätigen dann neues TName erzeugen und der Liste (Add) anhängen
- Navigation mit Button vor und Buttun zurück

mehr will ich zunächst nicht erreichen. War das mit Logic gemeint?

Nun die Herkules-Aufgabe: Die Form ist schlicht und einfach drei Editfelder eine checkbox und Button laden Button speichern Button vor und zurück.
Die logic in unit Daten ist die vom Link in #1. Name in Names geändert, damit keine Mißverst. auftreten.
Methode Laden:

Delphi-Quellcode:
procedure TForm1.ladenClick(Sender: TObject);
var Names:TName;
begin
  Names:=TName.create;
  try
    FDatalist.LoadFromFile('e:\test\daten.dat');
    Names := FDatalist.Items[0] as TName;
    Edit1.text:=inttostr(Names.ID);
    Edit2.Text:=Names.Name;
    Edit3.text:=Names.Herkunft;
    CheckBox1.Checked:=Names.Geschlecht;
  finally
    FreeAndNil(Names);
  end;
end;
Methode speichern:

Delphi-Quellcode:
procedure TForm1.speichernClick(Sender: TObject);
var Names: TName;
begin
  Names:=TName.create;
  try
    Names.ID:=strtoint(Edit1.text);
    Names.Name:=edit2.text;
    Names.Herkunft:=Edit3.text;
    Names.Geschlecht:=checkBox1.Checked;
    FDatalist.Add(Names);
    FDatalist.SaveToFile('e:\Test\daten.dat');
  init;
  finally
    FreeAndNil(Names);
  end;
end;

Probleme dabei: ich kann nur einen Datensatz eingeben und wenn abgespeichert wurde, kann so kein neuer eingegeben werden und auch der gespeicherte
nicht geladen werden, da er noch in Verwendung ist. Also müßte er für die Neueingabe eines zweiten DS freigegeben werden.
Weitere Handlungen am Programm sind erst nach Neustart des Prog. möglich, z.B. Datensatz laden.
Die Eingabe eines DS überschreibt den bereits gespeicherten DS.- blöd.

Was sollte ich tun? HolgerX schreibt: (Button Speichern), dann neues TName erzeugen und der Liste anhängen.
Das möchte ich auch aber wie?
Norbert
  Mit Zitat antworten Zitat