Einzelnen Beitrag anzeigen

Twinsetter

Registriert seit: 30. Dez 2007
9 Beiträge
 
#15

Re: EDIT Inhalte in Datei abspeichern und wieder laden

  Alt 5. Jan 2008, 18:38
@ grenzgaenger
Deine Lösung ist quelltextmäßig sehr kurz und auch elegant, bei der Angabe des Dateinamens ist DIr aber ein Fehler unterlaufen. Bei Deinem Code würde zum ersten jedesmal die Datendatei überschrieben, da Du den Dateinamen nicht änderst. Du verwendest mit Paramstr(0) den Namen Deines Programmes dem Du einfach nur die Extention .save dranhängst. Der Filename würde dann beispielsweise MeinProgramm.exe.save lauten.

Zum andern speicherst Du mit dieser Methode die kompletten TEdit-Objekte mit allen Properties ab. Abgesehen davon das dies unnötig Speicherplatz kostet - was heutzutage siche keine Rolle spielt - dürfte es aber auch Probleme beim Einlesen geben wenn später einmal das GUI geändert wird und alte gespeicherte Daten wieder eingelesen werden.

Für dieses Problem gibt es eigentlich nur zwei vernünftige Lösungen
1. mit Inidatei - man kann sie ja jedesmal mit einem andern Namen abspeichern
2. die klassische Methode mit einem Record und einen File vom Typ Recocord

Ich persönlich würde hier aber die Inimethode vorziehen.
Ach so - es auch gibt noch eine dritte Variante, die ich persönlich ganz gut finde - indizierte Stringliste.
z.B:
Delphi-Quellcode:
procedure SaveToFile(Datei:string)
var
  Liste : TStringlist
begin
  Liste:=TStringList.Create;
  Liste.Add('Name='+ed_0.text);
  Liste.Add('drehzahl='+ed_1.text);
  Liste.Add('untersetzung='+ed_2.text);
  Liste.Add('steigung='+ed_3.text);
  Liste.SaveToFile(Datei);
  Liste.Free;
end;


procedure LoadFromFile(Datei:string)
var
  Liste : TStringlist
begin
  Liste:=TStringList.Create;
  Liste.LoadFromFile(Datei)
  ed_0.text:=Liste.IndexOf('Name');
  ed_1.text:=Liste.IndexOf('drehzahl');
  ed_2.text:=Liste.IndexOf('untersetzung');
  ed_3.text:=Liste.IndexOf('steigung');
  Liste.Free;
end;
Diesen Proceduren wird beim Aufruf nur ein Dateiname übergeben der zum Beispiel über einen Speichern- bzw. Öffnendialog erzeugt wird. Dateiname und Extention sind vollig frei wählbar. Vorteil dieser Sache ist, daß die Dateien reine Textdateien sind und somit mit jedem Editor gelesen werden können wenn das Programm mal nicht verfügbar ist. Auch Einlesen mit Excel wäre möglich und sogar gut lesbar.
  Mit Zitat antworten Zitat