Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Inhalt der For-Schleife funktioniert nicht richtig - warum? (https://www.delphipraxis.net/61177-inhalt-der-schleife-funktioniert-nicht-richtig-warum.html)

Plague 17. Jan 2006 22:36


Inhalt der For-Schleife funktioniert nicht richtig - warum?
 
Hallo,

ich möchte alle Datein, die mit ihrem Pfad in einer ListBox eingetragen sind zum einen in einer Image Komponente darstellen (es handelt sich ausschließlich um Bilddatein) und anschließend per FTP hochladen.
Der Upload klappt ohne Probleme, aber in der Image Komponente wird erst am ende das letzte Bild angezeigt.
Woran kann das liegen?

Hier mal der entsprechende Code:
Delphi-Quellcode:
for i := 0 to anz do begin
     JpegToBMP(Listbox1.Items.Strings[i], Image1.Picture.Bitmap);
     //Image1.Picture.LoadFromFile(Listbox1.Items.Strings[i]);
     IdFTP1.Put(Listbox1.Items.Strings[i],ExtractFileName(Listbox1.Items.Strings[i]));
     end;
JpegToBMP ist eine procedure die wie der Name schon sagt ein Jpeg Bild in eine BMP Datei umwandelt um sie in der Image Komponente darstellen zu lassen.

Gruß
Thomas

malo 17. Jan 2006 22:39

Re: Inhalt der For-Schleife funktioniert nicht richtig - war
 
Hast du mal versucht, das ganze JPG2BMP-Gefasel zu umgehen, indem du "Jpeg" in die Uses-Klausel aufnimmst? :mrgreen:
Nur so nebenbei :duck:

Luckie 17. Jan 2006 22:40

Re: Inhalt der For-Schleife funktioniert nicht richtig - war
 
Mach mal nach dem LoadFromFile ein Image1.Refresh. Da du in der Schleife deinem Fenster keine Zeit zum Luftholen läßt, kann es auch nicht seine Komponenten neuzeichnen. Ich gehe auch mal stark davon aus, dass dein programm nicht mehr reagiert wärend des Uploads. so was lagert man sinnvollerweise in Threads aus. lEin Tutorial zu Threads findest du auf meiner Homepage.

Basilikum 17. Jan 2006 22:47

Re: Inhalt der For-Schleife funktioniert nicht richtig - war
 
du gibst Windows keine Chance, das Fenster bzw. die Image-Komponente neu zu zeichnen....
Delphi-Quellcode:
for i := 0 to anz do begin
  JpegToBMP(Listbox1.Items.Strings[i], Image1.Picture.Bitmap);

  Image1.Update(); // dies sollte die Image-Komponente neu zeichnen lassen

  IdFTP1.Put(Listbox1.Items.Strings[i],ExtractFileName(Listbox1.Items.Strings[i]));
end;
BTW: beim letzen Durchgang müsste es eigentlich zu einer Out-Of-Bounds-Exception kommen... 0 - anz sind (anz + 1) Durchgänge...
entweder
for I:=0 to anz - 1 do ...
oder
for i:=1 to anz do ...

Plague 17. Jan 2006 22:49

Re: Inhalt der For-Schleife funktioniert nicht richtig - war
 
Der Tipp mit dem Refresh klappt leider nicht! :(
Das Programm funktioniert auch noch, denn die ProgessBar läuft ohne probleme weiter. Gibt es sonst noch eine Möglichkeit?

@malo: Ich nutze die JPEG in der uses Klausel. Aber dadurch lässt die Image Komponente ja noch lang nicht jpg Datein zu, oder?

malo 17. Jan 2006 22:50

Re: Inhalt der For-Schleife funktioniert nicht richtig - war
 
Zitat:

Zitat von Plague
@malo: Ich nutze die JPEG in der uses Klausel. Aber dadurch lässt die Image Komponente ja noch lang nicht jpg Datein zu, oder?

Ich wage mich erinnern zu können, dass das doch der Fall war/ist. :gruebel:

Plague 17. Jan 2006 22:54

Re: Inhalt der For-Schleife funktioniert nicht richtig - war
 
Das scheint wirklich so zu sein...
Aber auch mit der normalen LoadFromFile Funktion der Image Kompnente wird lediglich das letzte Bild dargestellt!


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