| Autor |
Beitrag |
Cyberstarmh
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: 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 jasocul: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Mi 13.02.2008 um 11:24
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: Mi 13.02.08 11:32
zum speichern im Programmordner
ExtractFilePath(Application.ExeName)
sollte dir den Pfad liefern, wo dein Programm läuft
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 13.02.08 11:33
Cyberstarmh 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.
Cyberstarmh 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 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: 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
      
Beiträge: 660
Erhaltene Danke: 21
Win XP, Win7, Win 8
D7 Enterprise, Delphi XE, Interbase (5 - XE)
|
Verfasst: 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 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 11:57
Hier mal der Code.
Ausnahmefehler Pfad kann nicht gefunden werden.
Warum?
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 jasocul: Delphi-Tags hinzugefügt
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: Mi 13.02.08 12:02
zuma 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 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 12:22
Wo muss ich den Namen eintragen?
|
|
nagel
      
Beiträge: 708
Win7, Ubuntu 10.10
|
Verfasst: 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 
      
Beiträge: 16
Win XP
Delphi
|
Verfasst: Mi 13.02.08 12:40
|
|