![]() |
Promblem bei Listbox speichern
Hi
bei mir gibts ein Problem beim speichern einer List Box. Es kommt eine Fehlermeldung: 'F:\Delphi\Liste\liste.txt' kann nicht geöffnet werden. Das system kann die angegebene Datei nicht finden. Aber in dem Ordner hab ich die datei liste.txt erstellt. Mein Code:
Delphi-Quellcode:
Was mach ich falsch? Wäre dankbar für Hilfen...
procedure TForm1.Button1Click(Sender: TObject);
var l,d:string; begin l:=edit1.text; d:=edit2.Text; label5.caption:=(l)+ ' - '+(d); listbox1.Items.add(label5.caption); listbox1.Items.SaveToFile('liste.txt'); end; procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Items.LoadFromFile('liste.txt'); end; end. |
Re: Promblem bei Listbox speichern
Du verwendest in deinen Methoden relative Pfadangaben. Schau dir mal
![]() ![]() ![]() |
Re: Promblem bei Listbox speichern
Hallo,
verwende auf alle Fälle absolute Pfade. Nur so ist sichergestellt, dass die Datei dort abgelegt bzw. geladen wird, wo du es möchtest. Das Arbeitsverzeichnis, was bei relativen Pfaden genommen wird, ist nicht zwangsläufig dein Programmverzeichnis. Ist letzteres erwünscht, kannst du das so lösen:
Delphi-Quellcode:
Versuche das mal, um den Fehler des falschen Pfades auszuschließen. Ansonsten würde ich die Pfade mal genau prüfen. Denn der in der Meldung erwähnte Pfad existiert so nicht.
Pfad := ExtrcatFilePath(ParamStr(0)) + 'liste.txt';
Grüße |
Re: Promblem bei Listbox speichern
Delphi-Quellcode:
was muss ich für Pfad (F:\...\...)eingeben? oder isr das eine variable (intger,real,..)?
Pfad := ExtrcatFilePath(ParamStr(0)) + 'liste.txt';
|
Re: Promblem bei Listbox speichern
Pfad ist eine String-Variable.
|
Re: Promblem bei Listbox speichern
Zitat:
Delphi-Quellcode:
[EDIT] Roter Kasten [/Edit]
Pfad:String;
|
Re: Promblem bei Listbox speichern
Pfad ist vom Typ String
|
Re: Promblem bei Listbox speichern
Sollte jetzt geklärt sein :lol:
|
Re: Promblem bei Listbox speichern
Zitat:
|
Re: Promblem bei Listbox speichern
Dann heißt aber : Nicht deklarierter Bezeichner extractfilepath
|
Re: Promblem bei Listbox speichern
Hast du SysUtils eingebunden?
|
Re: Promblem bei Listbox speichern
Ist die Unit "SysUtils" in der Uses-Liste vorhanden?
Und welche Delphi-Version nutzt du? Vielleicht gab's das früher auch noch nicht. Edit: Sonst schaue mal in die Code-Library: ![]() |
Re: Promblem bei Listbox speichern
Turbo Delphi Explorer 2006
SysUtils ist eingefügt |
Re: Promblem bei Listbox speichern
Und da kommt sicher diese Meldung? Hast du "ExtractFilePath" korrekt geschrieben?
Ich nutze auch Turbo Delphi und da funktionierte das einwandfrei. Zeig doch mal 1:1 den relevanten Code. |
Re: Promblem bei Listbox speichern
Dann sollte er die Funktion auch finden :gruebel:
|
Re: Promblem bei Listbox speichern
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Label3: TLabel; Button1: TButton; ListBox1: TListBox; Label4: TLabel; Label5: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var l,d,Pfad:string; begin l:=edit1.text; d:=edit2.Text; label5.caption:=(l)+ ' - '+(d); listbox1.Items.add(label5.caption); edit1.Clear; edit2.Clear; Pfad := ExtractFilePath(ParamStr(0)) + 'liste.txt'; end; procedure TForm1.FormCreate(Sender: TObject); begin ListBox1.Items.LoadFromFile('liste.txt'); end; end. |
Re: Promblem bei Listbox speichern
Das kompiliert bei mir fehlerfrei. :gruebel:
|
Re: Promblem bei Listbox speichern
Sollte eigentlich funktionieren, aber mir sind andere Dinge aufgefallen:
-Warum klammerst du die (String-)Variablen? -Im onCreate greifst du noch auf einen u.U. falschen Pfad zu (aktuelles Verzeichnis muss wie erwähnt nicht das Verzeichnis der Exe sein) |
Re: Promblem bei Listbox speichern
Das laden der Datei ist ja nicht mal das wichtigste, sondern eigentlich nur das speichern
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var l,d,Pfad:string; begin l:=edit1.text; Pfad:='F:\Delphi\Lateinliste.txt'; d:=edit2.Text; label5.caption:=l+ ' - '+d; listbox1.Items.add(label5.caption); edit1.Clear; edit2.Clear; Pfad := ExtractFilePath(ParamStr(0)) + 'Lateinliste.txt' end; |
Re: Promblem bei Listbox speichern
Dennoch solltest du beim Laden ebenfalls den absoluten Pfad angeben, sonst kommt es u.U. zum Fehler, dass die Datei nicht gefunden werden kann.
Ich kann mir nicht erklären, wieso es bei dir nicht funktioniert. Notfalls kannst du ja mal eine der verlinkten Funktionen aus der Code-Library testen, wobei es natürlich sinnvoll wäre, dem Fehler auf die Spur zu kommen. Hier muss ich mich dann ausklinken, denn wie gesgat, bei mir funktioniert es so wie du's hast. |
Re: Promblem bei Listbox speichern
Dann ist ja dies
Delphi-Quellcode:
unnötig
Pfad:='F:\Delphi\Lateinliste.txt';
|
Re: Promblem bei Listbox speichern
bei mir funktioniert es auch aber wenn ich im Explorer auf Lateinliste.txt geh sehe ich kein einziegen Buchstaben
|
Re: Promblem bei Listbox speichern
Ach darum geht's. Du speicherst ja auch nichts ab:
Delphi-Quellcode:
ListBox1.Items.SaveToFile(Pfad);
|
Re: Promblem bei Listbox speichern
mmhh was soll ich sagen!?!?
Delphi-Quellcode:
mit dem funktionierts auch nicht
procedure TForm1.Button1Click(Sender: TObject);
var l,d,Pfad:string; begin l:=edit1.text; d:=edit2.Text; label5.caption:=l+ ' - '+d; listbox1.Items.add(label5.caption); edit1.Clear; edit2.Clear; Pfad := ExtractFilePath(ParamStr(0)) + 'Lateinliste.txt'; ListBox1.Items.SaveToFile(Pfad); end; |
Re: Promblem bei Listbox speichern
Lass dir doch nicht immer alles aus dem Ärmel ziehen.
Was geht denn nicht? Kommen Fehlermeldungen, wenn ja welche? Bei mir geht's einwandfrei und die Datei wird angelegt und enthält den gewünschten Inhalt. |
Re: Promblem bei Listbox speichern
Also es kommt keine Fehlermeldung nichts.
ich geb ein paar wörter ein. Dann geh ich im explorer (in windows) auf den Pfad wo ich das Textdukument erstellt habe, öffne es und sehe nichts (also es wird nichts reingeschrieben) |
Re: Promblem bei Listbox speichern
Die Reihenfolge Eingabe, Button-Klick hältst du aber ein?
|
Re: Promblem bei Listbox speichern
Ja geb die wörter ein, klick auf den Button, schließ das Programm und dann im Explorer zum Textdokument
|
Re: Promblem bei Listbox speichern
Die Datei wird aber erzeugt? Oder existiert diese vorher schon? Dann benenne sie mal um bzw lösche sie.
|
Re: Promblem bei Listbox speichern
Ich gehe mal davon aus, dass du Schreibrechte im Verzeichnis hast.
Wird die Datei angelegt, wenn sie zuvor nicht vorhanden war? GetLastError meldet bei mir seltsamerweise immer:
Code:
Doch die Datei wird korrekt geschrieben, auch immer mit dem neuen Inhalt. Nur die Meldung macht mich ein wenig stutzig. Versuche es daher mal, die Datei zu löschen und dann dein Programm auszuführen. Nur um zu testen, ob sie angelegt wird.
---------------------------
Project1 --------------------------- Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist --------------------------- OK --------------------------- Edit: Irgendwie haben Markus und ich die gleichen Gedanken, aber er ist immer einen Tick schneller ... :? |
Re: Promblem bei Listbox speichern
also jetzt hats irgendwie funktioniert nur es speichert immer nur das was ich bis zur programmschlißung geschrieben hab. Also wenn ich das Programm neustarte und etwas eingebe komm in dem Textdokument nur das Eingegebene von diesem mal.
|
Re: Promblem bei Listbox speichern
Ist ja auch klar. Du musst den Inhalt am Anfang laden und dann die weiteren Einträge anhängen
|
Re: Promblem bei Listbox speichern
also noch hinzufügen
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin ListBox1.Items.LoadFromFile('Lateinliste.txt'); end; |
Re: Promblem bei Listbox speichern
Ähem. Denk an den Pfad :zwinker:
|
Re: Promblem bei Listbox speichern
Delphi-Quellcode:
oder??
procedure TForm1.FormCreate(Sender: TObject);
begin ListBox1.Items.LoadFromFile(Pfad); end; |
Re: Promblem bei Listbox speichern
Pfad natürlich dementsprechend Setzen
|
Re: Promblem bei Listbox speichern
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var Pfad:string; begin ListBox1.Items.LoadFromFile(Pfad); Pfad := ExtractFilePath(ParamStr(0)) + 'Lateinliste.txt'; end; |
Re: Promblem bei Listbox speichern
Och denke doch ein bisschen nach. ;)
Natürlich musst du zuerst den Pfad zuweisen, bevor du darauf zugreifst. |
Re: Promblem bei Listbox speichern
Dann aber andersrum:
Delphi-Quellcode:
oder ohne extra Variable:
Pfad := ExtractFilePath(ParamStr(0)) + 'Lateinliste.txt';
ListBox1.Items.LoadFromFile(Pfad);
Delphi-Quellcode:
ListBox1.Items.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Lateinliste.txt');
|
Re: Promblem bei Listbox speichern
Hatt geklappt.
Danke für die Geduld und Hilfe :stupid: :mrgreen: :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz