Autor |
Beitrag |
Nippey
      
Beiträge: 36
|
Verfasst: Mo 18.06.07 15:32
Hallo
Wir arbeiten gerade an einem kleinen Projekt.Dieses Delphiprogramm soll ganz simple gestaltet werden:
Der Button Erstellen ist eigentlich die ganze Procedur.Button Neu und Button Close sind nur spielerei.
Im Editfeld_DateiName wird der Name für die spätere Textdatei eingegeben.Im Editfeld_DateiInhalt wird der Inhalt, der im späteren Textfile drin stehen soll, eingegeben.Soviel zum Thema.
Ich habe bereits ein wenig rumprobiert nur leider fehlen mir anscheinend wichtige Begriffe, die das ganz rund laufen lassen würden:
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:
| var Form1: TForm1; vDatei: TextFile; vDateiName, vDateiInhalt: String;
implementation
{$R *.dfm}
procedure TForm1.btn_CloseClick(Sender: TObject); begin close end;
procedure TForm1.btn_ErstellenClick(Sender: TObject); begin
vDateiName := edt_DateiName.Text + '.txt'; edt_DateiName.Text := vDateiName; vDateiInhalt := edt_DateiInhalt.Text; edt_DateiInhalt.Text := vDateiInhalt;
IF Fileexists (vDateiName) THEN AssignFile (vDatei,vDateiName) ELSE Rewrite (vDatei,vDateiName); Writeln (vDatei,vDateiInhalt);
end;
end. |
Anscheinend hat er ein Problem mit der Zeile 28 und 29.
Wenn ich das Programm starte klappt alles ganz einfach aber es ist kein Inhalt in dem Textfile.Ausserdem muss ich in Zeile 18 noch ein '.txt' hinten dranghängen sonst merkt Delphi nicht das mein Textfile gemeint ist.Vielleicht habt ihr ja ein paar Schönheitsfehler entdeckt.Bitte um Hilfe^^
MFG Nippey Moderiert von Klabautermann: Topic aus Sonstiges (Delphi) verschoben am Mo 18.06.2007 um 16:21
|
|
FiceGoesDelphi
      
Beiträge: 485
Win XP Prof
Delphi 2006
|
Verfasst: Mo 18.06.07 15:39
Schönheitsfehler? *gg*
Also dein Schreibstyle ist nicht gerade der Schönste! (Würde ich sagen!)
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.btn_ErstellenClick(Sender: TObject); begin vDateiName := edt_DateiName.Text + '.txt'; edt_DateiName.Text := vDateiName; vDateiInhalt := edt_DateiInhalt.Text; edt_DateiInhalt.Text := vDateiInhalt; if Fileexists (vDateiName) then AssignFile (vDatei,vDateiName) else begin Rewrite (vDatei,vDateiName); Writeln (vDatei,vDateiInhalt); end; end; |
beim Schreiben viel mir auf, das du beim "else" nur die 1. Zeile ausführst!
Du musst das in ein "Begin" "End" kapseln, damit er beim Else beide befehle ausführt!
Weiter kann ich mich atm nicht mit beschäftigen weil ich zu tun habe *seufz*
Vllt nachher, aber bis dahin wird dir Stefan und co sicherlich schon geholfen haben!
LG,
_________________ <(^^<) <(^^)> (>^^)>
===================
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 18.06.07 15:45
FiceGoesDelphi hat folgendes geschrieben: | Schönheitsfehler? *gg* Also dein Schreibstyle ist nicht gerade der Schönste! (Würde ich sagen!)
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:
| procedure TForm1.btn_ErstellenClick(Sender: TObject); begin vDateiName := edt_DateiName.Text + '.txt'; edt_DateiName.Text := vDateiName; vDateiInhalt := edt_DateiInhalt.Text; edt_DateiInhalt.Text := vDateiInhalt; AssignFile (vDatei,vDateiName) if Fileexists (vDateiName) then reset(vDatei); else Rewrite (vDatei); flush(vDatei); Writeln (vDatei,vDateiInhalt); append(vDatei);
writeln(vDatei, vDateiInhalt); closefile(vDatei); end; | |
LG Stefan
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
FiceGoesDelphi
      
Beiträge: 485
Win XP Prof
Delphi 2006
|
Verfasst: Mo 18.06.07 15:51
Sollte das closefile nicht lieber in einem Try Finally rein?!
Wenn das programm vorher nen Fehler hat, wirds nicht geclosed ..
Oder ist das Finally nur im Zusammenhang mit dem "free" besser?
Wenn ich ein "Free" aufrufe, mache ich das immer in einem Finally .. ist sicherer.
_________________ <(^^<) <(^^)> (>^^)>
===================
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 18.06.07 15:55
FiceGoesDelphi hat folgendes geschrieben: | Sollte das closefile nicht lieber in einem Try Finally rein?!
Wenn das programm vorher nen Fehler hat, wirds nicht geclosed ..
Oder ist das Finally nur im Zusammenhang mit dem "free" besser?
Wenn ich ein "Free" aufrufe, mache ich das immer in einem Finally .. ist sicherer. |
Sehr guter Einwand Björn!
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:
| procedure TForm1.btn_ErstellenClick(Sender: TObject); begin vDateiName := edt_DateiName.Text + '.txt'; edt_DateiName.Text := vDateiName; vDateiInhalt := edt_DateiInhalt.Text; edt_DateiInhalt.Text := vDateiInhalt; try AssignFile (vDatei,vDateiName) if Fileexists (vDateiName) then reset(vDatei); else Rewrite (vDatei); flush(vDatei); Writeln (vDatei,vDateiInhalt); append(vDatei);
writeln(vDatei, vDateiInhalt); closefile(vDatei); except on e: exception do begin closefile(vDatei); end; end; end; |
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Nippey 
      
Beiträge: 36
|
Verfasst: Mo 18.06.07 16:15
WoW das ging aber schnell.Ich werde das jetzt alles mal durcharbeiten und ausprobieren.Dankeschön
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Mo 18.06.07 16:34
Am einfachsten eine Textdatei zu erstellen, geht mit TStringList:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| var SL: TStringList; begin SL := TStringList.Create; SL.Text = 'blub blub blub...'; SL.SaveToFile('C:\blasen.txt'); SL.Free; end; |
|
|
Nippey 
      
Beiträge: 36
|
Verfasst: Mo 18.06.07 16:41
@ZeitGeist87:Ich habe jetzt alles so gemacht wie du es gesagt hast.Ein Problem besteht aber noch.Wenn ich zum Beispiel die Datei "Hallo" erstelle mit dem Inhalt "Hallo" dann erstellt er diese in dem Verzeichnis wo er auch das Delphiprogramm abspeichert.Wenn ich das Programm nochmal starte und eine Datei namens "Hallo" erstellen will, sollte Delphi die bereits bestehende Datei namens "Hallo" ja löschen/überschreiben.Wenn ich aber nochmal eine Datei namens "Hallo" erstelle dann kommt ein Fehler und das Programm bleibt in der Zeile mit Writeln stehen.
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 18.06.07 16:57
Nippey hat folgendes geschrieben: | @ZeitGeist87:Ich habe jetzt alles so gemacht wie du es gesagt hast.Ein Problem besteht aber noch.Wenn ich zum Beispiel die Datei "Hallo" erstelle mit dem Inhalt "Hallo" dann erstellt er diese in dem Verzeichnis wo er auch das Delphiprogramm abspeichert.Wenn ich das Programm nochmal starte und eine Datei namens "Hallo" erstellen will, sollte Delphi die bereits bestehende Datei namens "Hallo" ja löschen/überschreiben.Wenn ich aber nochmal eine Datei namens "Hallo" erstelle dann kommt ein Fehler und das Programm bleibt in der Zeile mit Writeln stehen. |
Gut, du musst dir darüber im Klaren sein, was passieren soll!
Soll die Datei, wenn sie bereits besteht, erweitert oder überschrieben werden?
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Nippey 
      
Beiträge: 36
|
Verfasst: Mo 18.06.07 16:59
Wenn sie bereits besteht soll sie mit dem neuen Inhalt überschrieben werden!Sorry habe mich vielleicht undeutlich ausgedrückt^^
Aber auch mit dem was du geschrieben ahst hängt sich das Programm auf.Deine Lösung war dazu da, eine vorhandene Datei zu erweitern oder?Also wenn "bla" in der Datei steht und man "BlaBla" rein schreiben will, dass "bla" dann durch "BlaBla" ersetzt wird oder?Aber das klappt bei mir mit dem Code auch nicht 8(
|
|
ZeitGeist87
      
Beiträge: 1593
Erhaltene Danke: 20
Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
|
Verfasst: Mo 18.06.07 17:18
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure TForm1.btn_ErstellenClick(Sender: TObject); begin vDateiName := edt_DateiName.Text + '.txt'; edt_DateiName.Text := vDateiName; vDateiInhalt := edt_DateiInhalt.Text; edt_DateiInhalt.Text := vDateiInhalt; AssignFile (vDatei,vDateiName) rewrite(vDatei); writeln(vDatei, vDateiInhalt); closefile(vDatei); end; | funktioniert bei mir wie gewünscht..
_________________ Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.
|
|
Nippey 
      
Beiträge: 36
|
Verfasst: Mo 18.06.07 17:23
Klasse jetzt klappt alles.Danke für die EXTREM schnelle Hilfe 
|
|
|