Autor Beitrag
Cyberstarmh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: Mi 13.02.08 11:12 
Stand:
Listboxeinträge in einer TXT. speichern

Problem:
-das Speichern in eine TXT klappt zwar, ich muss diese aber immer erst erstellen, wenn
ich das Programm auf einem anderen Rechner ausführen möchte
-Wieso ist das so?
-Wie schaffe ich es, dass die TXT. im Porgrammordner erstellt wird,
also unabhängig vom Rechner speichert und lädt?


Danke an Alle die sich die Mühe machen.
MfG Cyberstarmh


Moderiert von user profile iconjasocul: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 13.02.2008 um 11:24
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 13.02.08 11:19 
Die Frage ist, ja, warum du die erstellen musst. Ich nehme mal an, weil es sonst beim Laden einen Fehler gibt?
In dem Fall solltest du mit FileExists abfragen, ob die Datei überhaupt existiert. Beim Speichern wird die ja vermutlich erstellt.
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mi 13.02.08 11:32 
zum speichern im Programmordner

ExtractFilePath(Application.ExeName)

sollte dir den Pfad liefern, wo dein Programm läuft
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 13.02.08 11:33 
user profile iconCyberstarmh hat folgendes geschrieben:
-das Speichern in eine TXT klappt zwar, ich muss diese aber immer erst erstellen, wenn ich das Programm auf einem anderen Rechner ausführen möchte
-Wieso ist das so?
Wenn die Datei noch nicht da ist, muss sie erst erstell werden. Ist doch logisch. Es hängt aber auch davon ab, wie dein Programm das macht. Da du mit einer ListBox arbeitest, müsstest du eigentlich mit einem SaveToFile arbeiten. Da ist es völlig egal, ob die Datei vorhanden ist, oder nicht. Nur beim ersten Einlesen würdest du eine Fehlermeldung bekommen, die du aber über die Funktion FileExists abfangen könntest.

user profile iconCyberstarmh hat folgendes geschrieben:
-Wie schaffe ich es, dass die TXT. im Porgrammordner erstellt wird,
also unabhängig vom Rechner speichert und lädt?
Das wird nicht in jedem Fall gehen. Das ist ein Frage der Berechtigung, die der User hat. Wenn die Berechtigung da ist, kannst du über ExtractFilePath(Application.ExeName) das Programm-Verzeichnis feststellen.
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: Mi 13.02.08 11:38 
Ja genau.
geht das dann auch?

if Fileexist then loadfromfile
else createfile

oder wie macht man das?

Hab zu spät gelesen, Danke an Alle.
Danke
zuma
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 660
Erhaltene Danke: 21

Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
BeitragVerfasst: Mi 13.02.08 11:42 
wenn du mit SaveToFile arbeitest,
kannst du das
else createfile
weglassen, das macht das SaveToFile implizit.

_________________
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)
Warum sich Sorgen ums Leben machen? Keiner überlebts!
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: Mi 13.02.08 11:57 
Hier mal der Code.
Ausnahmefehler Pfad kann nicht gefunden werden.
Warum?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
procedure TForm1.FormCreate(Sender: TObject);
begin
if (FileExists(ExtractFilePath(Application.ExeName) )) then
begin
ListboxAnzeige.items.LoadFromFile(ExtractFilePath(Application.ExeName) )
end;
end;

procedure TForm1.Schliessen;
begin
 if MessageDLG('Möchten Sie die Daten speichern?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then
begin
ListboxAnzeige.Items.savetofile(ExtractFilePath(Application.ExeName) );
end;
if MessageDLG('Möchten Sie das Programm wirklich beenden?',mtConfirmation,[mbYes,mbNo],0)<>mrNo then
begin
close; 
end;
end


Moderiert von user profile iconjasocul: Delphi-Tags hinzugefügt
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Mi 13.02.08 12:02 
user profile iconzuma hat folgendes geschrieben:

ExtractFilePath(Application.ExeName)
sollte dir den Pfad liefern, wo dein Programm läuft

Du musst noch den eigentlichen Dateinamen angeben.

Außerdem bitte Delphi-Tags verwenden, also [delphi] und [/delphi] um deinen Quelltext.
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: Mi 13.02.08 12:22 
Wo muss ich den Namen eintragen?
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Mi 13.02.08 12:27 
Du musst bei FileExists, LoadFromFile und SaveToFile jeweils den Dateinamen angeben, hier gibst du allerdings nur den Dateipfad an. Du schreibst also beispielsweise (wenn die Datei liste.txt heißen soll) FileExists(ExtractFilePath(Application.ExeName) + 'liste.txt').
Cyberstarmh Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16

Win XP
Delphi
BeitragVerfasst: Mi 13.02.08 12:40 
Danke Problem gelöst