Problem bei Schleife mit dem inhalt einer Filelistbox

Friesi

Erfahrenes Mitglied
Hallo,

ich hab folgendes Problem:
Ich hab eine Filelistbox in der ich mehrere Dateien auswähle!

In einer Schleife wird diese Datei dann bearbeitet und wieder abgespeichert!

Mit einer Datei ist das alles kein Problem!
Doch wie mache ich, dass alle Markierten Dateien nacheinander durch die Schleife gehen (ohne das ich jedes extra anklicken muss)
 

Dario Linsky

Erfahrenes Mitglied
Code:
for i := 0 to FileListBox1.Items.Count - 1 do
begin
  if FileListBox1.Selected[i] then
  begin
    // Dateiname aus FileListBox1.Items[i] nehmen und die Datei verarbeiten
  end;
end;
 

Friesi

Erfahrenes Mitglied
mhm gibt doch noch ein Problem :(

also er macht auch mit der for to do schleife nur eine Datei :/

hier der code:

Code:
ProgressBar1.Max:= FileListBox1.Items.count -1;
for i :=0 to FileListBox1.Items.count -1 do
begin
  if FileListBox1.Selected[i] then
  begin
    BFrom := TBitmap.Create;
    BTo := TBitmap.Create;
    JPEG := TJPEGImage.create;
    JPEG.LoadFromFile(FileListBox1.Items[i]);
    //in ein Bitmap übergeben und jpeg freigeben
    BFrom.assign(jpeg);
    JPEG.free;
    //width und height auslesen
    width1:=strtoint(editwidth.text);
    height1:=strtoint(editheight.text);
    //Rechteck als "Zeichnungsfläche zur verfügung stellen
    aRect.top := 0;
    aRect.left := 0;
    aRect.right := width1;
    aRect.Bottom :=  height1;
    //Grösse des Zielbitmaps festlegen
    bTo.width:=width1;
    bTo.Height:=height1;
    //bitmap in das rechteck zeichnen und dem neuen bitmap "Bto" verkleinert übergeben
    Bto.canvas.StretchDraw(ARect, bFrom);
    //verkleinertes Bitmap wieder in jpeg umwandeln
    JPEG := TJPEGImage.create;
    JPEG.Assign(bTo);
    //--Qualität aus Combobox auslesen--
    //quali:=strtoint(qualibox.Text);
    //Kompressionsqualität einstellen und abspeichern
    JPEG.compressionQuality := 100;
    JPEG.JPEGNeeded;
    JPEG.compress;
    InFileName:=FileListBox1.FileName;
    FileName:=ExtractFileName(InFileName);
    FilePath:=IncludeTrailingBackSlash(OutDirEdit.Text);
    OutFileName:=Concat(FilePath,Prefix.Text,FileName);
    JPEG.savetofile(OutfileName);
    BFrom.Free;
    Bto.free;
    jpeg.free;
    ProgressBar1.Position:=i;
    end;
end;
 

Arne Buchwald

Erfahrenes Mitglied
Original geschrieben von Friesi
mhm gibt doch noch ein Problem :(

also er macht auch mit der for to do schleife nur eine Datei :/

hier der code:

Code:
ProgressBar1.Max:= FileListBox1.Items.count -1;
for i :=0 to FileListBox1.Items.count -1 do
begin
  if FileListBox1.Selected[i] then
  begin
    BFrom := TBitmap.Create;
    BTo := TBitmap.Create;
    JPEG := TJPEGImage.create;
    JPEG.LoadFromFile(FileListBox1.Items[i]);
    //in ein Bitmap übergeben und jpeg freigeben
    BFrom.assign(jpeg);
    JPEG.free;
    //width und height auslesen
    width1:=strtoint(editwidth.text);
    height1:=strtoint(editheight.text);
    //Rechteck als "Zeichnungsfläche zur verfügung stellen
    aRect.top := 0;
    aRect.left := 0;
    aRect.right := width1;
    aRect.Bottom :=  height1;
    //Grösse des Zielbitmaps festlegen
    bTo.width:=width1;
    bTo.Height:=height1;
    //bitmap in das rechteck zeichnen und dem neuen bitmap "Bto" verkleinert übergeben
    Bto.canvas.StretchDraw(ARect, bFrom);
    //verkleinertes Bitmap wieder in jpeg umwandeln
    JPEG := TJPEGImage.create;
    JPEG.Assign(bTo);
    //--Qualität aus Combobox auslesen--
    //quali:=strtoint(qualibox.Text);
    //Kompressionsqualität einstellen und abspeichern
    JPEG.compressionQuality := 100;
    JPEG.JPEGNeeded;
    JPEG.compress;
    InFileName:=FileListBox1.FileName;
    FileName:=ExtractFileName(InFileName);
    FilePath:=IncludeTrailingBackSlash(OutDirEdit.Text);
    OutFileName:=Concat(FilePath,Prefix.Text,FileName);
    JPEG.savetofile(OutfileName);
    BFrom.Free;
    Bto.free;
    jpeg.free;
    ProgressBar1.Position:=i;
    end;
end;
Hi,

"selected" ist ja auch nur eine Datei .... ;)
 

Friesi

Erfahrenes Mitglied
er sollte nur die Datein abarbeiten die in der Filelistbox ausgewählt sind! Also alle die Makiert sind!

Habs auch mal ohne Select Probiert! doch dann gehts auch nicht :/
 

Friesi

Erfahrenes Mitglied
habs bis jetzt immer noch nicht ans laufen bekommen :/
er arbeitet nur das letzte file ab, was makiert ist, obwohl der ganze inhalt in der listbox makiert ist!