Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Listbox-Inhalt speichern (https://www.delphipraxis.net/96478-listbox-inhalt-speichern.html)

Darksniper 25. Jul 2007 08:49


Listbox-Inhalt speichern
 
Hi

Wie kann man den Inhalt einer Listbox Speichern?

SirThornberry 25. Jul 2007 08:50

Re: Listbox-Inhalt speichern
 
am einfachsten geht es so:
Delphi-Quellcode:
ListBox1.SaveToFile(DateiName);

DeddyH 25. Jul 2007 08:52

Re: Listbox-Inhalt speichern
 
ListBox1.Items.SaveToFile(Datei);

SirThornberry 25. Jul 2007 08:58

Re: Listbox-Inhalt speichern
 
ups :oops:
Stimmt natürlich schließlich hält ja TStrings die Items.

Darksniper 25. Jul 2007 09:19

Re: Listbox-Inhalt speichern
 
muss ich "Datei" durch den Pfad einer Datei ersetzen oder wie geht das?

SirThornberry 25. Jul 2007 09:21

Re: Listbox-Inhalt speichern
 
Das ist in der Hilfe erklärt :wink:

Darksniper 25. Jul 2007 09:24

Re: Listbox-Inhalt speichern
 
ja ok
Zitat:

Mit der Methode SaveToFile lassen sich die Einträge der String-Liste in der Datei speichern, die mit dem Parameter FileName angegeben wird. Hierbei wird jeder String als eigene Zeile in der Datei abgelegt.
Das versteh ich aber irgentwie nicht ganz.

Nils_13 25. Jul 2007 09:27

Re: Listbox-Inhalt speichern
 
Seit wann steht so etwas in der Hilfe ? Ist doch Allgemeinwissen, was passiert, wenn man nur den Dateinamen angibt, anstelle vom kompletten Pfad....

Was verstehst du nicht ?

Wenn in der Listbox die Einträge ['a', 'b', 'c'] stehen, also so:
Zitat:

a
b
c
werden diese auch genau so in die Datei geschrieben.

Wenn du nur den Dateinamen angibst, speichert er dir das ins Programmverzeichniss, mit Pfadangaben, also z.B. /mnt/datene/.../datei.ext (arghs, zu viel Linux) oder für dich zutreffend E:\...\datei.ext, dann wird die Datei genau dort gespeichert.

Darksniper 25. Jul 2007 09:46

Re: Listbox-Inhalt speichern
 
schreib bitte ein beispiel damit ich mir mal n bild davon machen kann

denn ich hab bis jetzt nicht richtig verstanden wie ich das schreiben soll

SirThornberry 25. Jul 2007 09:48

Re: Listbox-Inhalt speichern
 
In Beitrag #3 hast du ein Beispiel. Datei repräsentiert dabei eine Variable vom Typ String in der (wie der Name schon sagt) der spätere Dateiname enthalten ist (also der Dateiname unter dem die Liste gespeichert werden soll)

Darksniper 25. Jul 2007 09:55

Re: Listbox-Inhalt speichern
 
Delphi-Quellcode:
procedure TForm3.Button4Click(Sender: TObject);
var Datei:string;
begin
 Listbox1.Items.SaveToFile(Datei);
end;
wenn ichs so schreibe und ich starte dann das programm und drücke auf den button, dann erscheint ne fehlermeldung mit dieser nachricht

Zitat:

Pfad darf nicht null sein
Parametername : path

DeddyH 25. Jul 2007 09:57

Re: Listbox-Inhalt speichern
 
Weise Datei einen Dateinamen zu.

Darksniper 25. Jul 2007 09:59

Re: Listbox-Inhalt speichern
 
und wie geht das

DeddyH 25. Jul 2007 10:08

Re: Listbox-Inhalt speichern
 
Delphi-Quellcode:
procedure TForm3.Button4Click(Sender: TObject);
var Datei:string;
begin
  Datei := 'C:\Rüsselmops.txt';
  Listbox1.Items.SaveToFile(Datei);
end;

Darksniper 25. Jul 2007 10:44

Re: Listbox-Inhalt speichern
 
kann man eine zeile einbauen die bewirkt, dass der/die ordner erstellt werden wenn sie nicht existieren?

DeddyH 25. Jul 2007 10:45

Re: Listbox-Inhalt speichern
 
Schau mal in die Hilfe unter ForceDirectories.

SirThornberry 25. Jul 2007 10:58

Re: Listbox-Inhalt speichern
 
@Darksnipper: Könntest du bitte für die neue Frage einen neuen Thread erstellen :)

Darksniper 25. Jul 2007 12:01

Re: Listbox-Inhalt speichern
 
kann man zwei Listboxen in einer datei speichern?

DeddyH 25. Jul 2007 12:04

Re: Listbox-Inhalt speichern
 
Neuen Thread bitte

Darksniper 25. Jul 2007 12:08

Re: Listbox-Inhalt speichern
 
Zitat:

Zitat von DeddyH
Neuen Thread bitte

warum??

Hat ja noch immer was mit "Listbox-Inhalt speichern" zu tun.

DeddyH 25. Jul 2007 12:08

Re: Listbox-Inhalt speichern
 
Na gut, so gesehen.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sList: TStringList;
begin
  sList := TStringList.Create;
  try
    sList.AddStrings(ListBox1.Items);
    sList.AddStrings(ListBox2.Items);
    sList.SaveToFile('C:\ein_Pfad\eine_Datei.eine_Endung');
  finally
    sList.Free;
  end;
end;

Darksniper 25. Jul 2007 12:21

Re: Listbox-Inhalt speichern
 
und wie ladet man die verschiedenen Listen dann wieder?

also getrennt in die zwei Listboxen

DeddyH 25. Jul 2007 12:43

Re: Listbox-Inhalt speichern
 
Dann überleg Dir eine eindeutige Trennzeile, füge diese zwischen den beiden AddStrings-Befehlen ein und beim Einlesen weißt Du, dass nach der Trennlinie die 2. ListBox dran ist.

Darksniper 25. Jul 2007 12:52

Re: Listbox-Inhalt speichern
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sList: TStringList;
begin
  sList := TStringList.Create;
  try
    sList.AddStrings(ListBox1.Items);
    sList.AddStrings('---');
    sList.AddStrings(ListBox2.Items);
    sList.SaveToFile('C:\ein_Pfad\eine_Datei.eine_Endung');
  finally
    sList.Free;
  end;
end;
so müsste das mit der trennlinie ja dan aussehen

aber wie geht das jetzt mit dem getrennten laden? :gruebel:

DeddyH 25. Jul 2007 13:04

Re: Listbox-Inhalt speichern
 
Delphi-Quellcode:
const Trenner = '========';

//Speichern
procedure TForm1.Button1Click(Sender: TObject);
var sList: TStringlist;
begin
  sList := TStringlist.Create;
  try
    sList.AddStrings(ListBox1.Items);
    sList.Add(Trenner);
    sList.AddStrings(ListBox2.Items);
    sList.SaveToFile('C:\Listboxen.txt');
  finally
    sList.Free;
  end;
end;

//Einlesen
procedure TForm1.Button2Click(Sender: TObject);
var iPos,i: integer;
    sList: TStringList;
begin
  ListBox1.Clear;
  ListBox2.Clear;
  ListBox1.Items.BeginUpdate;
  ListBox2.Items.BeginUpdate;
  sList := TStringlist.Create;
  try
    sList.LoadFromFile('C:\Listboxen.txt');
    //Index der Trennzeile ermitteln
    iPos := sList.IndexOf(Trenner);
    if iPos > -1 then
      begin
        //vom Listenende bis zum Vorgänger des Trenners
        for i := Pred(sList.Count) downto Succ(iPos) do
          begin
            //Zeile an erster Stelle einfügen
            ListBox2.Items.Insert(0,sList[i]);
            //und aus Liste löschen
            sList.Delete(i);
          end;
        //nun noch Trennzeile löschen
        sList.Delete(iPos);
      end;
    //der Rest gehört in die erste ListBox
    ListBox1.Items.Assign(sList);
  finally
    sList.Free;
  end;
  ListBox1.Items.EndUpdate;
  ListBox2.Items.EndUpdate;
end;

Darksniper 25. Jul 2007 16:04

Re: Listbox-Inhalt speichern
 
danke :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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