Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - 2xTEdit fenster, eingaben in einer txt speichern
ppl - Sa 24.05.08 10:42
Titel: 2xTEdit fenster, eingaben in einer txt speichern
Guteb Morgen,
Ich stehe gerade vor einer Großen herrausforderung, da ich ziemlicher anfänger bin,
und zwar habe ich 2 TEdit Fenster, und einen Enterbutton, ich versuche nun die eingaben in dem TEdit fenster im gleichen ordner zu speichern in dem mein programm ausgeführt wird, nur weiß ich nicht wie ich das hinbekommen soll,
hab schon gegoogelt aber ich raff das nicht,..
kann mir das jemand ausführlich bitte erklären?
MfG
ppl
ZeitGeist87 - Sa 24.05.08 10:54
Guten Morgen!
Selbstverständlich!
Es gibt einige Möglichkeiten:
TINIFILES,
ASSIGNFILE.
Ein einfaches Beispiel anhand von assignfile:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| var datei: Textfile; begin; assignfile(datei, includeTrailingPathDelimiter(extractfilepath(application.exename)) + 'Dateiname.txt');
rewrite(Datei);
writeLn(datei, );
writeLn(datei, );
closefile(datei); end; |
Jetzt sollte es im gleichen Ordner eine Datei geben, in der deine beiden Editfelder stehen.
Für die oben angesprochene Möglichkeit a), kannst du dir
RESET(); und
FLUSH anschauen.
Wichtig: Pack die ganze Verarbeitung noch in deinen
TRY EXCEPT-Block, um ein gutes Fehlerhandling zu gewährleisten.
Bei Fragen: Posten.
LG
Stefan
ppl - Sa 24.05.08 11:09
vielen dank für deine schnelle hilfe,
aber nun, bei "{hier das eine Editfeld angeben}" soll ich es ersetzen mit meinen TEdit namen? weil das will der nicht zulassen.
MfG
ppl
ps, dank dir weiß ich jetzt das man {} als beschreibung nutzen kann ^^
EDIT:
Ich muss das doch da eingeben, wenn ich doppelklick auf das hauptdenter mache oder?
sorry aber ich bin richtiger anfänger
ZeitGeist87 - Sa 24.05.08 11:11
ja, da den Namen deines Editfeldes eintragen mit der für deinen Zwecken RICHTIGEN Eigenschaft (texT.) ;-)
LG
Stefan
ppl - Sa 24.05.08 11:21
Sorry für meine Dummheit ^^
das hier ist von meinem 1ten eingabe fenster,
Moderiert von
Narses: Bild als Anhang hochgeladen
also muss ich dort doch jetzt Edit1 reinschreiben
writeLn(datei, Edit1);
so in etwa, aber der will das so nicht annehmen ^^
gibst du villeicht auch support über ICQ ^^
MfG
IRuleZ
ZeitGeist87 - Sa 24.05.08 11:41
ppl hat folgendes geschrieben: |
Sorry für meine Dummheit ^^
das hier ist von meinem 1ten eingabe fenster,
Moderiert von Narses: Bild als Anhang hochgeladen
also muss ich dort doch jetzt Edit1 reinschreiben
writeLn(datei, Edit1);
so in etwa, aber der will das so nicht annehmen ^^
gibst du villeicht auch support über ICQ ^^
MfG
IRuleZ |
Nö, Fragen werden im Forum geklärt ;-)
Edit1 stimmt, aber das fehlt noch was ;-)
Hast du zufällig ne Tastatur mit F1 drauf?
Klick mal bitte auf
writeln und drück F1.
LG
Stefan
ppl - Sa 24.05.08 12:02
danke für den klasse support
das erscheint = siehe anhang
nagel - Sa 24.05.08 12:28
Ich glaub, Stefan wollte, dass du in der Hilfe nachschaust, was WriteLn für Parameter erwartet, und nicht, dass du ihm einen Screenshot deiner OH postest :wink: . Außerdem steht die richtige Lösung sogar schon hier drin.
ppl - Sa 24.05.08 12:38
Guten Tag nagel,
wo den genau ? ich kriege es selbst nicht gebacken, habe bei f1 auch geguckt aber nicht gerafft wie ich das hinschreiben soll
EDIT
ich habs geschafft! hinter edit1 muss noch ein .text ^^
nun nächstes problem, end; wird mir mit einer roten zeile makiert.... wieso das denn,... jetzt kann ich icht compilieren..
mfg
ppl
nagel - Sa 24.05.08 15:00
Zeig mal deinen aktuellen Quelltext. Welche Fehlermeldung kommt?
ZeitGeist87 - Sa 24.05.08 15:00
Poste doch bitte mal deinen Code ;-)
Hast du überall das Semikolon gesetzt, wo es hingehört? ^^
ppl - Sa 24.05.08 15:17
Guten Tag,
habe es geschafft zu compilieren, der code sieht nun so aus
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| procedure TForm1.FormCreate(Sender: TObject); var datei: Textfile; begin
assignfile(datei, includeTrailingPathDelimiter(extractfilepath(application.exename)) + 'Dateiname.txt');
rewrite(Datei);
writeLn(datei, Edit1.Text);
writeLn(datei, Edit2.Text);
closefile(datei);
end; end. |
so alles schön und gut der code funzt aber nich so wie es soll,
es wird auf dem desktop eine dateiname.txt erstellt, aber nichts eingespeichert... woran liegt das
mfg
ppl
ZeitGeist87 - Sa 24.05.08 15:19
naja =)
du machst das in OnFormCreate, also zu dem Zeitpunkt, indem die Anwendung gestartet wird und ich gehe davon aus, nichts in deinen Feldern drin steht ;-)
Probier das Ganze doch mal mit einem Button aus ;-)
Wenn du alles richtig machst, solltest es so aussehen:
LG
Stefan
PS Code kannst du im Beitrag so formatieren {eckicke Klammer auf} Delphi {eckige Klammer zu}<-- dann dein Code -->{eckige Klammer auf}/Delphi{eckige Klammer zu}
ppl - Sa 24.05.08 15:33
ja es steht nix in den feldern drin, es soll ja was reingeschrieben werden, und die eingaben gespeichert werden.
geht das trozdem..?
ZeitGeist87 - Sa 24.05.08 15:54
Klar geht das, aber doch nich, wenn das Programm gerade startet ;-)
Also überlegen wir: wir lassen das Programm starten, schreiben dann irgendwann in diese Feld und am Schluss speichern wir es einfach ab ;-)
ppl - Sa 24.05.08 15:57
ZeitGeist87 hat folgendes geschrieben: |
Klar geht das, aber doch nich, wenn das Programm gerade startet ;-)
Also überlegen wir: wir lassen das Programm starten, schreiben dann irgendwann in diese Feld und am Schluss speichern wir es einfach ab ;-) |
jap so hab ich das gemeint, ich hab ja extra ein button dort... aber ich schaff das net alleine ^^
wäre echt nett wenn du mir so ne codevorlage geben könntest...
ZeitGeist87 - Sa 24.05.08 16:05
Beispiel im Anhang!
Analysiere und verstehe!!
ppl - Sa 24.05.08 16:23
thx, sowas hab ich gebraucht, mal sehen ob ich es verstehe,...
mfg
ppl
ppl - Sa 24.05.08 16:50
Vielen Dank,
habe es erfolgreich bei mir einbauen können und sogar verstanden,
besteht nun die möglichkeit, da wenn ich die daten jetzt eingeb die txt so aussieht
eingabe1
eingabe2
das man in der txt so ne art vorlage schon hat also das die txt so aussieht
Das ist ihr login
Benutzername: eingabe1
Password: eingabe2
bist echt klasse das du mir so hilfst dadurch werde ich an erfahrung reicher...
ZeitGeist87 - Sa 24.05.08 17:06
Kein Problem, deswegen ist das ja ein Forum ;-)
Ja, das ist möglich.
aber ich würde es einfach so machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.Button1Click(Sender: TObject); var datei: TextFile; begin assignfile(datei, includetrailingpathdelimiter(extractfilepath(application.exename)) + 'MeineDatei.txt'); rewrite(datei);
writeln('Das ist Ihr Login'); writeln(''); writeln('Benutzername: ' + edit1.text); writeln('Passwort: ' + edit2.text);
closefile(datei); end; |
Somit schaut deine Textdatei immer gleich aus ;-)
Was ich dir allerdings empfehlen würde:
TINIFILE.
LG
Stefan
PS Ich hab oben nen Fehler eingebaut, mal schauen, ob du ihn findest ;-)
ppl - Sa 24.05.08 17:20
der fehler befindet sich doch hier drin
writeln('Das ist Ihr Login');
writeln('');
writeln('Benutzername: ' + edit1.text);
writeln('Passwort: ' + edit2.text);
das "datei" fehlt ^^
habs erstmal net gefunden ^^
weiß aber nicht genau wo der sein soll ?
ZeitGeist87 - Sa 24.05.08 17:30
Das war er ;-)
ppl - Sa 24.05.08 20:37
Guten Abend,
nun würde es mich interessieren was man schreiben müsste wenn man nach dem prinzip (2post in diesem thead)
weiter gehen will : a) die Datei existiert schon -> du kannst sie leeren oder weiter in sie schreiben
hierbei würde ich sie gerne weiterschreiben...
hab mir schon gedanken gemacht wie das gehen könnte, nur bin ich noch bisschien zu unerfahren glaube ich,..
ich gehe nach dem prinzip learing by doing...
also wäre nett wenn ihr mir wieder tipps geben könntet und wieder einen versteckten fehler einbaut damit ich auch von lerne ^^
mfg
ppl
ZeitGeist87 - Sa 24.05.08 20:50
Guten Abend!
Selbstverständlich.
Dafür musst du nur die Befehle
RESET();,
APPEND und
FLUSH verwenden ;-)
Achja..auf die blauen Wörter kannst du klicken, damit wird praktisch die Suchfunktion im Forum wie von Geisterhand betätigt.
Diese 3 Befehl an der richtigen Stelle in deinem Code und es geht.
LG
Stefan
ppl - Sa 24.05.08 21:10
ich schaffs nicht :(
ZeitGeist87 - Sa 24.05.08 21:12
ppl hat folgendes geschrieben: |
| ich schaffs nicht :( |
Bissl wenig ;-)
Zeig doch mal, was du bis jetzt hast.
ppl - Sa 24.05.08 21:19
ich verstehe nicht genau wozu append und flush gut sein soll, reset(); <- dort hätte ich den namen der txt reingemacht..
EDIT
mom ich habs gleich
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| writeLn(datei,'Spiele : ' + edit2.text); writeLn(datei,''); writeLn(datei,'#######################################################');
closefile(datei);
Append(datei);
WriteLn(datei, 'Final line added');
CloseFile(datei);
Reset(datei); |
also so klappts nicht
ZeitGeist87 - Sa 24.05.08 21:31
reset():
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| Die Prozedur öffnet eine vorhandene Datei.
Unit
System
Kategorie
Ein-/Ausgabe
Delphi-Syntax:
procedure Reset(var F [: File; RecSize: Word ] );
Beschreibung
In Delphi öffnet Reset die in F angegebene externe Datei in dem Modus, der in der globalen Variable FileMode festgelegt ist. Ist keine Datei mit diesem Namen vorhanden oder kann die Datei nicht im aktuellen Dateimodus geöffnet werden, tritt ein Fehler auf. Ist F bereits offen, wird sie zuerst geschlossen und dann erneut geöffnet. Nach dem Öffnen wird der Dateizeiger an den Anfang der Datei gesetzt.
Warnung: Der Standardwert von FileMode ist 2 (Lesen/Schreiben). Auch wenn die Datei nur gelesen werden soll, verursacht der Standardwert von FileMode (Schreib-/Lesezugriff), dass das Öffnen einer schreibgeschützten Datei fehlschlägt.
F ist eine Variable eines beliebigen Dateityps, die zuvor mit AssignFile einer externen Datei zugewiesen wurde. RecSize ist ein optionaler Ausdruck, der nur bei untypisierten Dateien angegeben werden kann. Wenn F eine untypisierte Datei ist, gibt RecSize die Blockgröße für Datenübertragungen an. Wenn Sie RecSize nicht angeben, wird der Standardwert 128 verwendet.
Wird F ein leerer String zugewiesen (z.B. AssignFile(F, '')), zeigt die Variable nach dem Aufruf von Reset auf die Standardeingabedatei.
Bei einer Textdatei ist F nach dem Öffnen schreibgeschützt.
Nach dem Aufruf von Reset hat Eof(F) den Wert true, wenn die Datei leer ist. Andernfalls ist Eof(F) false. |
append:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21:
| Die Prozedur bereitet eine vorhandene Datei auf das Anhängen von Textdaten vor.
Unit
System
Kategorie
Ein-/Ausgabe
Delphi-Syntax:
procedure Append(var F: Text);
Beschreibung
Mit Append können Sie sicherstellen, dass eine Datei schreibgeschützt geöffnet und der Dateizeiger auf das Ende der Datei gesetzt wird. F ist eine Textdateivariable und muss zuvor mit AssignFile einer externen Datei zugeordnet werden. Ist die Datei mit dem angegebenen Namen nicht vorhanden, tritt ein Fehler auf. Wenn F bereits offen ist, wird sie geschlossen und anschließend erneut geöffnet. Die aktuelle Dateiposition wird dann auf das Dateiende gesetzt.
Wenn im letzten 128-Byte-Block der Datei das Zeichen Strg+Z (ASCII 26) vorhanden ist, wird die aktuelle Dateiposition so gesetzt, dass das nächste zu der Datei hinzugefügte Zeichen das erste Strg+Z des Blocks überschreibt. Auf diese Weise kann Text an eine Datei angehängt werden, die mit Strg+Z endet.
Wurde F kein Name zugewiesen, verweist die Variable nach dem Aufruf von Append auf die Standardausgabe. |
und
flush:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| Die Funktion leert den Puffer einer für die Ausgabe geöffneten Textdatei.
Unit
System
Kategorie
Textdateien
Delphi-Syntax:
function Flush(var t: Text): Integer;
Beschreibung
F ist eine Textdateivariable.
Der Dateipuffer einer mit Rewrite oder Append für die Ausgabe geöffneten Textdatei kann durch einen Aufruf von Flush geleert werden. Dadurch wird sichergestellt, dass alle zu diesem Zeitpunkt in die Datei geschriebenen Zeichen tatsächlich in die externe Datei eingetragen werden. Flush wirkt sich nicht auf Dateien aus, die für die Eingabe geöffnet sind.
Flush gibt 0 zurück, wenn die Operation erfolgreich war. Ansonsten wird der Fehlercode zurückgeliefert. Wenn beim Compilieren das Flag {$I-} verwendet wird, gibt die Methode IOResult diesen Wert zurück.
Hinweis: Mit dem Compiler-Schalter {$I+} können Laufzeitfehler durch Exceptions behandelt werden. Wenn Sie {$I-} verwenden, müssen Sie mit IOResult explizit auf E/A-Fehler prüfen. |
Beispiel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| var
f: TextFile; begin if OpenDialog1.Execute then begin AssignFile(f, OpenDialog1.FileName); Append(f); Writeln(f, 'I am appending some stuff to the end of the file.'); Flush(f); CloseFile(f); end;
end; |
ppl - Sa 24.05.08 21:35
ich versteh das nicht ganz, wo/wie soll ich das nun einbauen?
ZeitGeist87 - Sa 24.05.08 21:35
ppl hat folgendes geschrieben: |
ich verstehe nicht genau wozu append und flush gut sein soll, reset(); <- dort hätte ich den namen der txt reingemacht..
EDIT
mom ich habs gleich
also so klappts nicht |
Mach ma Programmieren nach Zahlen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| (3) writeLn(datei,'Spiele : ' + edit2.text); (3) writeLn(datei,''); (3) writeLn(datei,'#######################################################');
(4) closefile(datei);
(2) Append(datei);
(3) WriteLn(datei, 'Final line added');
(-) CloseFile(datei);
(1) Reset(datei); |
Kannst du Pokern? Dann vergiss den (Royal) "....." nicht ;-)
LG
Stefan
ppl - Sa 24.05.08 21:41
argh,.. du machst mich noch fertig mit deinen rätseln, ^^ :D ich werds mal probieren ^^
EDIT:
das macht mich irgendwie nicht schlau, gehts villt noch ein bisschien leichter ^^ ,...
irgendwie versteh ich das gar net.. (habs mir aber alles durchgelesen, nicht das du denkst.... )
ppl - Sa 24.05.08 21:59
aus irgendeinem grund speichert der meine eingaben jetzt auch nicht mehr.... finde den fehler nicht...
also in der txt steht nur benutzername password und spiele
das ist der code
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
|
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, XPMan, Buttons, Mask;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Edit3: TEdit; XPManifest1: TXPManifest; Label1: TLabel; Label2: TLabel; Label3: TLabel; StaticText1: TStaticText; StaticText2: TStaticText; procedure FormCreate(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); var datei: Textfile; begin
assignfile(datei, includeTrailingPathDelimiter(extractfilepath(application.exename)) + 'Meine Steam Accounts.txt');
rewrite(Datei);
writeLn(datei,'#######################################################'); writeLn(datei,''); writeLn(datei,'Benutzername: ' + edit1.text); writeLn(datei,'Password : ' + edit2.text); writeLn(datei,'Spiele : ' + edit2.text); writeLn(datei,''); writeLn(datei,'#######################################################');
closefile(datei);
end; end. |
ich muss es neu machen ich komme nicht auf den fehler...
ZeitGeist87 - Sa 24.05.08 22:03
GRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
Das hatten wir doch schon ;-)
ppl hat folgendes geschrieben: |
aus irgendeinem grund speichert der meine eingaben jetzt auch nicht mehr.... finde den fehler nicht...
also in der txt steht nur benutzername password und spiele
das ist der code
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
|
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, XPMan, Buttons, Mask;
type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Edit3: TEdit; XPManifest1: TXPManifest; Label1: TLabel; Label2: TLabel; Label3: TLabel; StaticText1: TStaticText; StaticText2: TStaticText; procedure FormCreate(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); var datei: Textfile; begin
assignfile(datei, includeTrailingPathDelimiter(extractfilepath(application.exename)) + 'Meine Steam Accounts.txt');
rewrite(Datei);
writeLn(datei,'#######################################################'); writeLn(datei,''); writeLn(datei,'Benutzername: ' + edit1.text); writeLn(datei,'Password : ' + edit2.text); writeLn(datei,'Spiele : ' + edit2.text); writeLn(datei,''); writeLn(datei,'#######################################################');
closefile(datei);
end; end. | |
Warum denn schon wieder beim Starten deines Programmes? ;-)
ppl - Sa 24.05.08 22:30
hab das problem gefunden nach langen suchen -.- ,
nun ja hab das Button Click vergessen einzubauen...
ich versuche es jetzt mal neu kann 5 min dauern...
ppl - Sa 24.05.08 22:35
sorry aber ich werde heute echt nicht mehr schlau,... bei deinem beispiel(der zum download) wenn ich auf compile gehe zeigt der mir hier einen fehler
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| program Project1;
uses Forms, Unit1 in 'Unit1.pas' ;
{$R *.res}
begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm1, Form1); Application.Run; end. |
ZeitGeist87 - Sa 24.05.08 22:36
lösch das mal raus ;-)
MDX - Sa 24.05.08 22:38
Am anfang sind die Editfelder noch Leer!!!!????
Moderiert von
Narses: Zitat entfernt
ppl - Sa 24.05.08 22:41
ach endlich geht alles wieder ^^, hatte schon keinen nerv mehr :o
nun ja zu den weiterschreien des txt´s ich raff deine rätsel ehrlich nicht mehr ist wahrscheinlich zu spät oder die sind zu schwer,.. kannst du es villt leicher machen ^^
---
Moderiert von
Narses: Beiträge zusammengefasst---
hab alles wieder geschafft das mit dem überschreiben leuft auch gut!
thx 4 help
Narses - So 25.05.08 00:21
Moin!
Markierst du den Thread noch entsprechend, wenn dein Problem gelöst ist? Danke. ;)
cu
Narses
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!