Entwickler-Ecke

Dateizugriff - Textdatei an bestimmte Stelle speichern


stigge - So 25.03.07 22:23
Titel: Textdatei an bestimmte Stelle speichern
Ich lasse ein paar Editfelder mit opendialogen befüllen.
Wenn ich die Editfelder jetzt aber in eine Textdatei speichere, speichert er sie immer dahin, wo ich als letztes mit dem opendialog war. Frage: Wie kann ich die Datei in den gleichen Ordner wie das Programm speichern?
Kleiner Ausschnitt des Quelltextes:

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:
58:
59:
60:
61:
62:
63:
procedure TForm2.Button9Click(Sender: TObject);
begin
opendialog8.Execute;
edit9.Text := opendialog8.FileName;
end;

procedure TForm2.Button10Click(Sender: TObject);
begin
opendialog9.Execute;
edit10.Text := opendialog9.FileName;
end;

procedure TForm2.Button11Click(Sender: TObject);
var schreiben: textfile;
begin
if edit1.Text = '' then
begin
exit;
end else
assignfile(schreiben, 'paths.txt');
rewrite(schreiben);
writeln(schreiben, edit1.Text);
writeln(schreiben, edit2.Text);
writeln(schreiben, edit11.Text);
writeln(schreiben, edit3.Text);
writeln(schreiben, edit12.Text);
writeln(schreiben, edit4.Text);
writeln(schreiben, edit13.Text);
writeln(schreiben, edit5.Text);
writeln(schreiben, edit14.Text);
writeln(schreiben, edit6.Text);
writeln(schreiben, edit15.Text);
writeln(schreiben, edit7.Text);
writeln(schreiben, edit16.Text);
writeln(schreiben, edit8.Text);
writeln(schreiben, edit17.Text);
writeln(schreiben, edit9.Text);
writeln(schreiben, edit18.Text);
writeln(schreiben, edit10.Text);
writeln(schreiben, edit19.Text);
closefile(schreiben);
edit1.clear;
edit2.clear;
edit3.clear;
edit4.clear;
edit5.clear;
edit6.clear;
edit7.clear;
edit8.clear;
edit9.clear;
edit10.clear;
edit11.clear;
edit12.clear;
edit13.clear;
edit14.clear;
edit15.clear;
edit16.clear;
edit17.clear;
edit18.clear;
edit19.clear;
form1.Show;
form2.Hide;
end;



Moderiert von user profile iconChristian S.: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am So 25.03.2007 um 22:24


Blackheart666 - So 25.03.07 22:34

ExtractFilePath(ParamStr(0)
Grausig deinen Code würd Ich an deiner Stelle nochmal überdenken.


stigge - So 25.03.07 22:37

user profile iconBlackheart666 hat folgendes geschrieben:
ExtractFilePath(ParamStr(0)
Grausig deinen Code würd Ich an deiner Stelle nochmal überdenken.

Naja, läuft eigentlich sehr schnell.

Delphi-Quelltext
1:
ExtractFilePath(ParamStr(0)                    

Ja schon, aber wann und wie kann ich ihm den Pfad mitgeben?
Bei einer listbox oder Ähnlichem wäre es ja klar, aber wie mache ich es bei dieser Art von Schreiben?


stigge - So 25.03.07 22:42

So klappt's zumindest nicht:

Delphi-Quelltext
1:
assignfile(schreiben, ExtractFilePath(Application.Exename));                    


Blackheart666 - So 25.03.07 22:46

Na genauso,ExtractFilePath liefert dir den Pfad zur Exe dann nur deinen Dateinamen noch dran fertsch.
Bei den ganzen Clears schau mal nach FindKomponent.
Und 10 OpenDialoge sind doch bestimmt auch nicht nötig.

Delphi-Quelltext
1:
assignfile(schreiben, ExtractFilePath(ParamStr(0) +'Path.txt');                    


Christian S. - So 25.03.07 22:48

[Leicht-Off-Topic]@stigge: Schau Dir mal den Styleguide [http://www.dsdt.info/grundlagen/styleguide/] an. Insbesondere zu Themen Namensgebung und Einrückung.[/Leicht-Off-Topic]


stigge - So 25.03.07 22:50

user profile iconBlackheart666 hat folgendes geschrieben:
Na genauso,ExtractFilePath liefert dir den Pfad zur Exe dann nur deinen Dateinamen noch dran fertsch.
Bei den ganzen Clears schau mal nach FindKomponent.
Und 10 OpenDialoge sind doch bestimmt auch nicht nötig.

Delphi-Quelltext
1:
assignfile(schreiben, ExtractFilePath(ParamStr(0) +'Path.txt');                    

Kommt der gleiche Fehler wie immer:
Ungültiger Dateiname
Wahrscheinlich kann man nur den Dateinamen zuweisen, aber nicht den Pfad. Aber es muss doch irgendwie möglich sein!


stigge - So 25.03.07 22:52

user profile iconChristian S. hat folgendes geschrieben:
[Leicht-Off-Topic]@stigge: Schau Dir mal den Styleguide [http://www.dsdt.info/grundlagen/styleguide/] an. Insbesondere zu Themen Namensgebung und Einrückung.[/Leicht-Off-Topic]

Eingerückt hab ich noch nie geschrieben und Namensgebung, naja, manchmal fällt mir der Name nicht auf die Schnelle nicht ein. Siehe "Irgendwas-Zeichen" :oops:


Christian S. - So 25.03.07 22:54

user profile iconstigge hat folgendes geschrieben:
Wahrscheinlich kann man nur den Dateinamen zuweisen, aber nicht den Pfad.
Natürlich kann man auch den Pfad zuweisen, weil er Teil des Dateinamens ist. Wenn Du ihn nicht mit angibst, wird das aktive Verzeichnis verwendet, wie Du ja am eigenen Leib erfahren hast.

Lass Dir mal ausgeben , was ExtractFilePath(ParamStr(0))+'Path.txt' ist. Vielleicht fehlt da irgendwo noch ein Backslash.

Und bitte nutze die Edit-Funktion im Forum, falls Du in nur wenigen Minuten Abstand noch was zu Deinem Beitrag hinzufügen möchtest.


Blackheart666 - So 25.03.07 22:59

Da fehlte auch noch eine Klammer

Delphi-Quelltext
1:
assignfile(schreiben, ExtractFilePath(ParamStr(0)) +'Path.txt');                    


stigge - So 25.03.07 22:59

user profile iconChristian S. hat folgendes geschrieben:
user profile iconstigge hat folgendes geschrieben:
Wahrscheinlich kann man nur den Dateinamen zuweisen, aber nicht den Pfad.
Natürlich kann man auch den Pfad zuweisen, weil er Teil des Dateinamens ist. Wenn Du ihn nicht mit angibst, wird das aktive Verzeichnis verwendet, wie Du ja am eigenen Leib erfahren hast.

Lass Dir mal ausgeben , was ExtractFilePath(ParamStr(0))+'Path.txt' ist. Vielleicht fehlt da irgendwo noch ein Backslash.

Und bitte nutze die Edit-Funktion im Forum, falls Du in nur wenigen Minuten Abstand noch was zu Deinem Beitrag hinzufügen möchtest.

Ich hab's raus!

Delphi-Quelltext
1:
2:
3:
4:
var pfad: string;

pfad := ExtractFilePath(ParamStr(0));
pfad := pfad+'paths.dat';

Er hat einfach nicht das pfade.txt hinten drangehängt. Danke Leute!


Christian S. - So 25.03.07 23:01

Lass mich raten, Du hattest die letzte Klammer falsch gesetzt, sodass dieses hier dabei heraus kam:

Delphi-Quelltext
1:
ExtractFilePath(ParamStr(0)+'paths.dat');                    

Deines ist nämlich identisch mit dem, was ich schrieb:

Delphi-Quelltext
1:
ExtractFilePath(ParamStr(0))+'paths.dat';                    


stigge - Mo 26.03.07 13:02

user profile iconChristian S. hat folgendes geschrieben:
Lass mich raten, Du hattest die letzte Klammer falsch gesetzt, sodass dieses hier dabei heraus kam:

Delphi-Quelltext
1:
ExtractFilePath(ParamStr(0)+'paths.dat');                    

Deines ist nämlich identisch mit dem, was ich schrieb:

Delphi-Quelltext
1:
ExtractFilePath(ParamStr(0))+'paths.dat';                    

Ich hab's einfach von oben rauskopiert und nicht weiter darüber nachgedacht, weil ich sowieso dachte, das es nicht klappt :wink: