Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Markierte Checklistboxeinträge speichern (https://www.delphipraxis.net/26440-markierte-checklistboxeintraege-speichern.html)

sui 23. Jul 2004 23:51


Markierte Checklistboxeinträge speichern
 
Hi, hat jemand eine Idee, wie man nur die markierten
Checklistbox-Einträge speichert?

Bei mir werden immer alle Einträge in einer Textdatei
gespeichert statt nur die markierten. :twisted:

Christian Seehase 24. Jul 2004 00:42

Re: Markierte Checklistboxeinträge speichern
 
Moin Sui,

geh' in einer Schleife durch die Liste und schreibe nur die markierten Einträge.

sui 24. Jul 2004 00:55

Re: Markierte Checklistboxeinträge speichern
 
Delphi-Quellcode:


procedure TForm1.BitBtn7Click(Sender: TObject);
var i: integer;
begin
for i := checklistbox1.Items.count-1 downto 0 do
begin
if checklistbox1.Checked[i] then
begin
...

Hm, stimmt das, bis dahin?

Luckie 24. Jul 2004 00:56

Re: Markierte Checklistboxeinträge speichern
 
Zitat:

Zitat von sui
Hm, stimmt das, bis dahin?

Wie wäre es mit ausprobieren? :roll:

sui 24. Jul 2004 00:59

Re: Markierte Checklistboxeinträge speichern
 
Weil was fehlt was ich nicht hinkriege, das speichern...

Luckie 24. Jul 2004 01:10

Re: Markierte Checklistboxeinträge speichern
 
Ach ja.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  F: TextFile;
begin
  AssignFile(F, 'x:\test.txt');
{$I-}
  Rewrite(f);
  if IOResult = 0 then
  begin
    for i := 0 to CheckListBox1.Items.Count - 1 do
    begin
      if CheckListBox1.Checked[i] then
        writeln(F, CheckListbox1.Items.Strings[i]);
    end;
    CloseFile(F);
  end
{$I+}
  else
    RaiseLastOSError;
end;
:roll:

sui 24. Jul 2004 01:51

Re: Markierte Checklistboxeinträge speichern
 
Eigentlich sollte es mit Ordner-Auswahl sein.

Warum klappt das denn nicht so:

Delphi-Quellcode:
var i: integer;
begin
for i := 0 to checklistbox1.Items.count-1 do
begin
if checklistbox1.Checked[i] then
begin
if savedialog1.Execute then
Checklistbox1.Items.SaveToFile(savedialog1.FileName);
end;
end;
end;
Es werden wieder alle Einträge gespeichert, auch die nichtmarkierten.

sui 24. Jul 2004 02:25

Re: Markierte Checklistboxeinträge speichern
 
Ok, habs so gemacht:

Delphi-Quellcode:
procedure TForm1.BitBtn7Click(Sender: TObject);
var
  i: Integer;
  F: TextFile;
  Pfad: string;
begin
if savedialog1.execute then begin
pfad := extractfilename(savedialog1.FileName);
  AssignFile(F, Pfad + '.txt');
{$I-}
  Rewrite(f);
  if IOResult = 0 then
  begin
    for i := 0 to CheckListBox1.Items.Count - 1 do
    begin
      if CheckListBox1.Checked[i] then
        writeln(F, CheckListbox1.Items.Strings[i]);
    end;
    CloseFile(F);
  end  ;
    end;     end;
end.
:drunken:

Luckie 24. Jul 2004 03:11

Re: Markierte Checklistboxeinträge speichern
 
Delphi-Quellcode:
pfad := extractfilename(savedialog1.FileName);
AssignFile(F, Pfad + '.txt');
Und wo denkst du landet die Datei, wenn du nur den Dateinamen nimmst, aber ohne Pfadangabe? :gruebel:

Aus: "d:\eigene Daten\Bilder\Test.txt" wird bei dir "Test.txt".

Desweiteren kann man beim SaveDialog eine standard Dateinamenerweiterung angeben, die genommen wird, wenn der Benutzer keine angibt. Das "+'.txt'" erübrigt sich dann auch.

Ich sehe gerade, es fehlt auch noch das wieder einschalten des I/O-checkings {$I+}.

sui 24. Jul 2004 11:52

Re: Markierte Checklistboxeinträge speichern
 
Hm, also es arbeitet wunderbar so.
War das einzige was mir heute nacht eingefallen ist.

Mit dem I/O-checkings {$I+} weiss ich nicht so recht,
kam immer ne Exception. Habs einfach weggelassen und
scho hatt es geklappt.

Die Pfadangabe hol ich mir doch mit dem Save-Dialog
und speicher die in Pfad.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz