Speichern wenn man etwas verändert hat

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Napster
Beiträge: 36
Registriert: Di 24. Okt 2006, 13:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hemsbach
Kontaktdaten:

Speichern wenn man etwas verändert hat

Beitrag von Napster »

Hey also ich hab ne frage, die überschrift klingt zwar so also ob ich wissen will wie man sein project speichert, aber das meine ich nicht. und zwar ich will in ein programm machen in dem man was in sein TEdit schreiben kann und das dann speichert.
Also praktisch ein Programm, wo auser einem TEdit nichts ist, und in dieses Edit schreib ich dann was (während das Programm ausgeführt wird, nicht wenn ich beim bearbeiten bin, sondern wenn es schon fertig ist) und es dann speicher, sodass wenn ich dass programm erneut starte, im TEdit dann das steht was ich davor da rein geschrieben habe. Hoffe ihr versteht was ich meine. Kann mir jemand helfen??

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Hallo Napster!

Soweit ich weiß, gibt es da keine direkte Möglichkeit, das Edit-Feld so, wie es ist, in eine Datei zu speichern. Du musst hier mit den Dateizugriffsbefehlen von freepascal arbeiten.

Das ist ein für ein Anfänger recht komplexes Thema. Es lohnt sich aber, dort einzuarbeiten, da man immer mal wieder in die Situation kommt, Programmeinstellungen u.ä. in Dateien abzuspeichern.

Hier kannst du dich in das Thema einarbeiten:

http://www.dankradfeist.de/content/ph/dateien.htm

(Übersichtlich, geht aber nicht sonderlich in die Tiefe)

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Vielleicht hilft diese Seite weiter: http://wiki.lazarus.freepascal.org/TXMLPropStorage/de . Prinzipiell müßte man auch den Inhalt eines Edit Feldes speichern können.

knight

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Es funktioniert mit einer Stringliste

Beitrag von ralli »

Natürlich geht das auch. Mit einer Stringliste. Du brauchst einen TButton, einen TSaveDialog und TEdit Kompo. TEdit ist in diesem Falle in Abfrage umbenannt.

Code: Alles auswählen

procedure TForm1.Abfrage_SpeichernClick(Sender: TObject);
 
var Liste : TStringList;
 
begin
 
Liste := TStringList.Create;
 
if Abfrage.Text <> '' then
 
begin
 
Liste.add(Abfrage.Text);
 
// SaveDialog_Abfrage.InitialDir := Pfad;
 
if SaveDialog_Abfrage.Execute then
 
begin
 
Liste.SaveToFile(SaveDialog_Abfrage.FileName);
 
end;
 
end;
 
Liste.Free;
 
end;


ralli

Napster
Beiträge: 36
Registriert: Di 24. Okt 2006, 13:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hemsbach
Kontaktdaten:

Beitrag von Napster »

???? Sry breuchte zu deiner Lösung, Ralli, eine nähere beschreibung, was was ist ud so weiter. Also Den button nenne ich "Abfrage_Speichern" & den TEdit nenne ich "Abfrage" richtig?? so und was beduetet das var List und Creat TSring List etc??? PLS etw. genauer


mfg Napster

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Ich denke, du solltest dich vielleicht auch etwas mehr mit den Grundlagen beschäftigen, Sachen wie beispielsweise var... sind einfach Standard und sollten meiner Meinung nach schon bekannt sein.

Vielleicht hilft es dir, dich mal beispielsweise damit auseinader zu setzen. Ist zwar für Delphi, sollte allerdings recht einfach ohne Änderungen auf Lazarus übertragbar sein.

Napster
Beiträge: 36
Registriert: Di 24. Okt 2006, 13:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hemsbach
Kontaktdaten:

Beitrag von Napster »

?? Wenn ich mich mit z.B. meiner Frage beschäftige, dann lern ich das ja auch dabei oder nicht?? und wo bekommt man das so gut erklärt wie in einem Forum?? auf diesen Hilfsseiten?? Nein, denn die gehen nur auf prinzipielle Probleme ein oder erklären nur allgemeins über z.B. eine Variable. Ich meine ein Forum ist nicht dazu da dass ich alles erklärt bekomme, aber für gewisse Fragen. Naja wie dem auch sei. dann gibts wohl hier keine Antwort die ich verstehe!!

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Re: Es funktioniert mit einer Stringliste

Beitrag von monta »

^^jetzt gib mal nicht gleich auf, es war ja mehr ein kleiner Apell an etwas mehr Eigeninitiative, wo man die Lösung selber sucht.

Prinzipiell denk ich, Euklids Vorschlag ist, auch aufgrund des lerneffektes eigentlich besser.
Aber TStringlist ist halt einfacher.

Also nochmal rallis Quellcode erklärt:

Also dein TEdit heißt im Beispiel Abfrage
Der Inhalt der Procedure muss beim entsprechenden Button fürs speichern, beim OnClick-Ereignis eingefügt werden.

Code: Alles auswählen

procedure TForm1.Abfrage_SpeichernClick(Sender: TObject);
var Liste : TStringList;
//du legst eine Variable (var) mit dem Namen List vom Typ TStringlist an, TStringlist speichert letztlich Zeichenfolgen als Testdatei, dabei ist jede Zeile ein String.
begin
Liste := TStringList.Create;
//die Stringliste wird so erstellt
if Abfrage.Text <> '' then
//speichert nur, wenn auch Text eingegeben wurde
begin
Liste.add(Abfrage.Text);
//fügt in die Stringliste eine neue Zeile ein, welche den Text des Edits enthält
// SaveDialog_Abfrage.InitialDir := Pfad;
 
if SaveDialog_Abfrage.Execute then
//ermöglicht das Auswählen, eines Verzeichnisses, in welchem die Stringlist gespeichert wird
begin
Liste.SaveToFile(SaveDialog_Abfrage.FileName);
//speichert die Stringlist, alternativ könntest du die if-Abfrage auch weglassen und direkt angeben: Liste.SaveToFile('dateiname.txt'); angeben, dies hätte zur folge, das die Datei automatisch im Selben Ordner wie das Programm gespeichert würde.
end;
 
end;
Liste.Free;
//die Lste, welche du anfangs erstellt hast, wird hier wieder freigegeben.
end;


Ich würde noch Ressourcenschutzblöcke einfügen. Am besten du schaust dir auch mal das hier an:
http://www.dsdt.info/tipps/?id=531 Da stehen eigentlich beide Proceduren, welche du brauchst, um zum einen die Daten zu speichern, aber auc, um sie wieder einzulesen.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

und wo bekommt man das so gut erklärt wie in einem Forum??

Ein Forum ist aber dazu da echte Probleme zu diskutieren. Und nicht weil man zu faul ist Google oder ne Hilfe zu benutzen zu Fragen.
Naja bin ja froh solang hier nicth noch gefragt wird wie man einen Button zu bedienen hat.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Napster
Beiträge: 36
Registriert: Di 24. Okt 2006, 13:58
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hemsbach
Kontaktdaten:

Beitrag von Napster »

mh des is wohl alles ZU schwer

Antworten