Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Edittext speichern (https://www.delphipraxis.net/141548-edittext-speichern.html)

Zer0_24 11. Okt 2009 00:11


Edittext speichern
 
Moin,

ich programmiere seit kurzem mit Delphi7. Bei einem Programm von mir wird eine Zahl als Edittext ausgegeben. Diese Zahl möchte ich speichern, sodass sie nach dem Schließen, beim nächsten Öffnen des Programms immernoch dort steht. Wie funktioniert das?

MfG

isilive 11. Okt 2009 02:07

Re: Edittext speichern
 
Servus Zero,

du kannst die Datei in eine Ini-Datei schreiben. Schau dir das mal an.

Mit AssignFile kann man auch Texte in Dateien schreiben und lesen.

Alternativ könntest du den Wert in die Registry schreiben, aber das würde ich dir erst empfehlen wenn du Delphi im Griff hast, damit du dir da nix vergurkst. :stupid:

stiftII 11. Okt 2009 02:20

Re: Edittext speichern
 
Hallo,
Du kannst zB. eine Datei erzeugen, in der diese Zahl gespeichert wird, diese lädst du dann beim erneuten Start des Programmes.

Delphi-Quellcode:
var
myfile : textfile;
s1 : string;
begin
//Überprüfen ob datei existiert
If Not fileExists('MeineZahl.txt') Then
 Begin
   //Wenn nicht mit wert von edit1 füllen
   AssignFile(myfile,'MeineZahl.txt');
   Rewrite(myfile);
   WriteLn(myfile,edit1.text);
 end else
 begin
   //Wenn Existiert, edit1 mit mit meinezahl.txt füllen..
   AssignFile(myfile,'MeineZahl.txt');
   reset(myfile);
   readln(myfile,s1);
   edit1.Text := s1;
 end;
 //Datei schließen.
 closefile(myfile);
Wenn du möchtest, dass die zahl, welche im edit1 steht beim schließen des Programmes gespeichert wird, dann führe das ganze im OnDestroy Ereignis deiner Hauptform aus.

Und zum einlesen eben beim OnCreate Ereignis.

~stift

Zer0_24 11. Okt 2009 17:52

Re: Edittext speichern
 
Danke für die Antworten,

ich habs jetzt mal mit der textdatei versucht. Eine Fehlermeldung bekomme ich nicht, die textdatei wird auch erstellt; allerdings ist sie leer und der edittext steht dach dem erneuten öffnen auch nicht mehr im editfenster. ich hab jetzt den kompletten code bei OnClose und bei OnShow der Hauptform. Muss ich da noch irgendwas unterschiedlich machen (einmal readln und einmal writeln oder so)?

mfg

stiftII 11. Okt 2009 18:05

Re: Edittext speichern
 
Hallo nochmal,
Vielleicht hatte edit1 keinen Wert als die Datei geschrieben wurden ist. Mit dem Script von mir wird die Datei nämlich nur ein einziges mal geschrieben, wenn sie existiert nur noch gelesen..

Einfach die Datei nochmal löschen und edit1 mit nem Wert füllen ;).

~stift

isilive 11. Okt 2009 19:19

Re: Edittext speichern
 
Natürlich musst du den Code von Stift anpassen. Das war nur ein Beispiel.

Du musst am Anfang einlesen:
Delphi-Quellcode:
var myfile : textfile;
s1 : string;
begin
   AssignFile(myfile,'MeineZahl.txt');
   reset(myfile);
   readln(myfile,s1);
   edit1.Text := s1;
   closefile(myfile);
   end;
... Und später einmal schreiben. Ob du das bei Form.destroy oder auf Knopfdruck oder sonstwas machst, kannst du dir aussuchen.

Delphi-Quellcode:
var myfile : textfile;
s1 : string;
begin
   AssignFile(myfile,'MeineZahl.txt');
   Rewrite(myfile);
   WriteLn(myfile,edit1.text);
   closefile(myfile);
end;
Versuche zu verstehen was jede einzelne Zeile macht, dann ist auch klar was wo und warum eingebaut gehört. Dies hier ist auf edit1 zugeschnitten, wenn dein Edit Feld anders heisst, dann ist das natürlich zu ändern.
Was auch noch fehlt ist eine Abfrage ob die Datei überhaupt schon existiert -> fileexists

Bernhard Geyer 11. Okt 2009 19:40

Re: Edittext speichern
 
Zitat:

Zitat von isilive
AssignFile(myfile,'MeineZahl.txt');

Dateinamenangaben ohne komplette Verzeichnisangabe sind problematisch da sie vom aktuellen Arbeitsverzeichnis der Exe abhängen. Un diese kann durch diverse Aktionen (z.B. Datei öffnen/speichern-Dialog geändert worden sein.

Zer0_24 11. Okt 2009 20:12

Re: Edittext speichern
 
@ stift und isilive: Perfekt, vielen Dank. :-D
@ Bernhard: Also du meinst ich soll noch das Verzeichnis mit angeben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz