Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   For schleife (https://www.delphipraxis.net/155677-schleife.html)

-Phantom- 3. Nov 2010 17:09

Delphi-Version: 2010

For schleife
 
Hey Leute,

ich komme hier grade nicht weiter.:roll:

Ich will Dateien in einer Listview eintragen.
Delphi-Quellcode:
if add.FileName <> '' then begin
    fneu.zip.ZipFileName := lblpfad.Caption;
    i2 := add.Files.Count;
    for i := 0 to i2 - 1 do begin
    neudatei := Extractfilename(add.Files[i]);
    item := dateilist.Items.Add;
    item.Caption := neudatei;
    item.SubItems.Add(Extractfilename(neupfad)+'/'+neudatei);
    fneu.zip.FSpecArgs.Add(add.Files[i]);
    fneu.zip.Add;
Klappt alles wunderbar.
Nun möchte ich aber noch das die Datei Größen in einem Subitem hinzugefügt werden
Delphi-Quellcode:
for iz := 0 to dateilist.Items.Count-1 do begin
    item.SubItems.Add(inttostr(fneu.zip[iz].CompressedSize)+' B');
    item.SubItems.Add(datetostr(fneu.zip[iz].DateStamp));
Hier ist das Problem das die Werte einfach immer überschrieben werden. Alle Dateien sind z.B 8 Bytes groß
( Das Archiv wird trotzdem mit den richtigen Datei erstellt und die Dateien werden auch richtig hinzugefügt)

shmia 3. Nov 2010 17:17

AW: For schleife
 
Anscheinend willst du die Dateigrössen nachträglich einsetzen.
Delphi-Quellcode:
for iz := 0 to dateilist.Items.Count-1 do
begin
  item := dateilist.Items[iz]; // <==== *****
  item.SubItems.Add(inttostr(fneu.zip[iz].CompressedSize)+' B');
  item.SubItems.Add(datetostr(fneu.zip[iz].DateStamp));

-Phantom- 3. Nov 2010 17:31

AW: For schleife
 
Danke so geht es. Ähmm... nein ich trage sie nicht nachträglich nach so sieht das nun bei mir aus
Delphi-Quellcode:
var
i,i2,iz: Integer;
neudatei : String;
item : TLISTitem;

begin
  dateilist.Enabled := false;
  lblstatus.Caption := 'Dateien werden hinzugefügt...';
  fneu.Zip.DLLDirectory := ExtractFilePath(ParamStr(0));
    add.Execute;
    if add.FileName <> '' then begin
    fneu.zip.ZipFileName := lblpfad.Caption;
    i2 := add.Files.Count;
    for i := 0 to i2 - 1 do begin
    neudatei := Extractfilename(add.Files[i]);
    item := dateilist.Items.Add;
    item.Caption := neudatei;
    item.SubItems.Add(Extractfilename(neupfad)+'/'+neudatei);
    fneu.zip.FSpecArgs.Add(add.Files[i]);
    fneu.zip.Add;
    fneu.zip.ZipComment := fneu.smemo2.Text;
    end;
    for iz := 0 to dateilist.Items.Count-1 do begin
    item := dateilist.Items[iz];
    item.SubItems.Add(inttostr(fneu.zip[iz].CompressedSize)+' B');
    item.SubItems.Add(datetostr(fneu.zip[iz].DateStamp));
    end;
    end;
     if dialogshow then
    showmessage('Datei/en wurden erfolgreich hinzugefügt');
    dateilist.Enabled := True;
end;
Kann man das noch anders mit den For Schleifen machen?

// wenn ich das alle in eine for-schleife packe geht das nur beim ersten mal gut, denn "i2 = add.fiels.count" und dann werden die Daten in der Listview wieder überschrieben.

Luckie 3. Nov 2010 17:34

AW: For schleife
 
Du machst es doch nachträglich in der zweiten Schleife. Warum machst du das nicht alles in einer Schleife?

-Phantom- 3. Nov 2010 17:40

AW: For schleife
 
i2 := add.fiels.count; So beim zweiten klickt auf den Button fängt das ja wieder von vorne an und die ersten Daten werden überschrieben !


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