Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Promblem bei Listbox speichern (https://www.delphipraxis.net/124751-promblem-bei-listbox-speichern.html)

Hans33 24. Nov 2008 18:38


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:
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.
Was mach ich falsch? Wäre dankbar für Hilfen...

Andreas L. 24. Nov 2008 18:51

Re: Promblem bei Listbox speichern
 
Du verwendest in deinen Methoden relative Pfadangaben. Schau dir mal Hier im Forum suchenExtractFilePath, Hier im Forum suchenApplication.Exename und Hier im Forum suchenGetShellFolder an.

Matze 24. Nov 2008 18:51

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:
Pfad := ExtrcatFilePath(ParamStr(0)) + 'liste.txt';
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.

Grüße

Hans33 24. Nov 2008 19:15

Re: Promblem bei Listbox speichern
 
Delphi-Quellcode:
Pfad := ExtrcatFilePath(ParamStr(0)) + 'liste.txt';
was muss ich für Pfad (F:\...\...)eingeben? oder isr das eine variable (intger,real,..)?

DeddyH 24. Nov 2008 19:24

Re: Promblem bei Listbox speichern
 
Pfad ist eine String-Variable.

Der.Kaktus 24. Nov 2008 19:26

Re: Promblem bei Listbox speichern
 
Zitat:

Zitat von Hans33
Delphi-Quellcode:
Pfad := ExtrcatFilePath(ParamStr(0)) + 'liste.txt';
was muss ich für Pfad (F:\...\...)eingeben? oder isr das eine variable (intger,real,..)?

Extractfilepath erwartet einen "string" Also
Delphi-Quellcode:
Pfad:String;
[EDIT] Roter Kasten [/Edit]

mkinzler 24. Nov 2008 19:29

Re: Promblem bei Listbox speichern
 
Pfad ist vom Typ String

DeddyH 24. Nov 2008 19:30

Re: Promblem bei Listbox speichern
 
Sollte jetzt geklärt sein :lol:

Der.Kaktus 24. Nov 2008 19:31

Re: Promblem bei Listbox speichern
 
Zitat:

Zitat von mkinzler
Pfad ist vom Typ String

Haufen Rote Kaesten hier *gg*

Hans33 24. Nov 2008 20:40

Re: Promblem bei Listbox speichern
 
Dann heißt aber : Nicht deklarierter Bezeichner extractfilepath

mkinzler 24. Nov 2008 20:44

Re: Promblem bei Listbox speichern
 
Hast du SysUtils eingebunden?

Matze 24. Nov 2008 20:47

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: Ordner aus Pfad extrahieren.

Hans33 24. Nov 2008 20:55

Re: Promblem bei Listbox speichern
 
Turbo Delphi Explorer 2006
SysUtils ist eingefügt

Matze 24. Nov 2008 20:57

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.

mkinzler 24. Nov 2008 20:58

Re: Promblem bei Listbox speichern
 
Dann sollte er die Funktion auch finden :gruebel:

Hans33 24. Nov 2008 21:00

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.

Matze 24. Nov 2008 21:04

Re: Promblem bei Listbox speichern
 
Das kompiliert bei mir fehlerfrei. :gruebel:

mkinzler 24. Nov 2008 21:07

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)

Hans33 24. Nov 2008 21:19

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;

Matze 24. Nov 2008 21:22

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.

mkinzler 24. Nov 2008 21:23

Re: Promblem bei Listbox speichern
 
Dann ist ja dies
Delphi-Quellcode:
Pfad:='F:\Delphi\Lateinliste.txt';
unnötig

Hans33 24. Nov 2008 21:25

Re: Promblem bei Listbox speichern
 
bei mir funktioniert es auch aber wenn ich im Explorer auf Lateinliste.txt geh sehe ich kein einziegen Buchstaben

Matze 24. Nov 2008 21:26

Re: Promblem bei Listbox speichern
 
Ach darum geht's. Du speicherst ja auch nichts ab:

Delphi-Quellcode:
ListBox1.Items.SaveToFile(Pfad);

Hans33 24. Nov 2008 21:37

Re: Promblem bei Listbox speichern
 
mmhh was soll ich sagen!?!?
Delphi-Quellcode:
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;
mit dem funktionierts auch nicht

Matze 24. Nov 2008 21:40

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.

Hans33 24. Nov 2008 21:42

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)

mkinzler 24. Nov 2008 21:44

Re: Promblem bei Listbox speichern
 
Die Reihenfolge Eingabe, Button-Klick hältst du aber ein?

Hans33 24. Nov 2008 21:45

Re: Promblem bei Listbox speichern
 
Ja geb die wörter ein, klick auf den Button, schließ das Programm und dann im Explorer zum Textdokument

mkinzler 24. Nov 2008 21:50

Re: Promblem bei Listbox speichern
 
Die Datei wird aber erzeugt? Oder existiert diese vorher schon? Dann benenne sie mal um bzw lösche sie.

Matze 24. Nov 2008 21:50

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:
---------------------------
Project1
---------------------------
Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist
---------------------------
OK  
---------------------------
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.

Edit: Irgendwie haben Markus und ich die gleichen Gedanken, aber er ist immer einen Tick schneller ... :?

Hans33 24. Nov 2008 21:52

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.

mkinzler 24. Nov 2008 21:53

Re: Promblem bei Listbox speichern
 
Ist ja auch klar. Du musst den Inhalt am Anfang laden und dann die weiteren Einträge anhängen

Hans33 24. Nov 2008 21:55

Re: Promblem bei Listbox speichern
 
also noch hinzufügen
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('Lateinliste.txt');
end;

mkinzler 24. Nov 2008 21:57

Re: Promblem bei Listbox speichern
 
Ähem. Denk an den Pfad :zwinker:

Hans33 24. Nov 2008 21:58

Re: Promblem bei Listbox speichern
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Items.LoadFromFile(Pfad);
end;
oder??

mkinzler 24. Nov 2008 21:59

Re: Promblem bei Listbox speichern
 
Pfad natürlich dementsprechend Setzen

Hans33 24. Nov 2008 22:01

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;

Matze 24. Nov 2008 22:02

Re: Promblem bei Listbox speichern
 
Och denke doch ein bisschen nach. ;)

Natürlich musst du zuerst den Pfad zuweisen, bevor du darauf zugreifst.

mkinzler 24. Nov 2008 22:03

Re: Promblem bei Listbox speichern
 
Dann aber andersrum:
Delphi-Quellcode:
Pfad := ExtractFilePath(ParamStr(0)) + 'Lateinliste.txt';
ListBox1.Items.LoadFromFile(Pfad);
oder ohne extra Variable:
Delphi-Quellcode:
ListBox1.Items.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'Lateinliste.txt');

Hans33 24. Nov 2008 22:08

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.
Seite 1 von 2  1 2      

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