Autor Beitrag
Nippey
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Mo 18.06.07 15:32 
Hallo

Wir arbeiten gerade an einem kleinen Projekt.Dieses Delphiprogramm soll ganz simple gestaltet werden:
user defined image

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:

ausblenden volle Höhe 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:
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 user profile iconKlabautermann: Topic aus Sonstiges (Delphi) verschoben am Mo 18.06.2007 um 16:21
FiceGoesDelphi
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: Mo 18.06.07 15:39 
Schönheitsfehler? *gg*
Also dein Schreibstyle ist nicht gerade der Schönste! (Würde ich sagen!)

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 18.06.07 15:45 
user profile iconFiceGoesDelphi hat folgendes geschrieben:
Schönheitsfehler? *gg*
Also dein Schreibstyle ist nicht gerade der Schönste! (Würde ich sagen!)

ausblenden 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); //lesenderweise öffnen
  else  
   Rewrite (vDatei);  //neu erzeugen/leeren

  //Herausschreiben des Inhalts
  //Wenn der Inhalt angehängt werden soll musst du es so machen
  flush(vDatei);
  Writeln (vDatei,vDateiInhalt);  
  append(vDatei);

  //Willst du nichts anhängen 
  writeln(vDatei, vDateiInhalt);
  
  //Ganz wichtig: Dateien nach Bearbeitungsvorgang immer schließen
  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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 485

Win XP Prof
Delphi 2006
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 18.06.07 15:55 
user profile iconFiceGoesDelphi 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!

ausblenden volle Höhe 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:
 
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); //lesenderweise öffnen 
   else  
    Rewrite (vDatei);  //neu erzeugen/leeren

   //Herausschreiben des Inhalts 
   //Wenn der Inhalt angehängt werden soll musst du es so machen
   flush(vDatei);
   Writeln (vDatei,vDateiInhalt);  
   append(vDatei);

   //Willst du nichts anhängen 
   writeln(vDatei, vDateiInhalt);
  
   //Ganz wichtig: Dateien nach Bearbeitungsvorgang immer schließen
   closefile(vDatei); 
  except
   on e: exception do
   begin
   //Ausgabe einer Fehlermeldung
    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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Mo 18.06.07 16:15 
WoW das ging aber schnell.Ich werde das jetzt alles mal durcharbeiten und ausprobieren.Dankeschön
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mo 18.06.07 16:34 
Am einfachsten eine Textdatei zu erstellen, geht mit TStringList:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  SL: TStringList;
begin
  SL := TStringList.Create;       // Konstruktor aufrufen
  SL.Text = 'blub blub blub...';  // Inhalt der StringList setzen
  SL.SaveToFile('C:\blasen.txt'); // Inhalt der StringList abspeichern
  SL.Free;                        // Nicht unbedingt nötig, da Delphi normalerweise selbst aufräumt..
end;
Nippey Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 18.06.07 16:57 
user profile iconNippey 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 18.06.07 17:18 
ausblenden 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);
  //Herausschreibe
  writeln(vDatei, vDateiInhalt);
  
  //Ganz wichtig: Dateien nach Bearbeitungsvorgang immer schließen
  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Mo 18.06.07 17:23 
Klasse jetzt klappt alles.Danke für die EXTREM schnelle Hilfe :lol: