Hallo liebe Experten,
ich schreibe eine
VCL-Anwendung bei der TImages auf dem Form liegen und die
zur Laufzeit Bilddateien (bmp,jpg) nachladen. Beim Laden (Image1.picture.loadfromfile) kommt es leider gelegentlich zu
kleinen Hängern (z.B. stockt die akustische Ausgabe). Deshalb überlege ich, die Dateien zum Start des Programms in ein Array von TBitmaps
zu laden und die dann bei Bedarf über Assign in dem TImage darzustellen.
Dabei stosse ich aber laufend auf Probleme. Ich bin mit TImage und TBitmap nicht besonders versiert und kriege die
Dateien weder geladen und natürlich auch nicht dargestellt...
Erste Frage: Haltet ihr das für eine zielführende Möglichkeit um das Ruckeln zur Laufzeit loszuwerden?
Zweite: Was mache in den Prozeduren preloadImage und showImage falsch?
Übergeben wird der Dateiname in fname und das TImage.Picture.Bitmap welches auf der Form liegt.
Delphi-Quellcode:
var IC:Array [1..100] of TBitmap;
icname:Array [1..100] of string;
icmax:integer;
procedure preloadImage(fname:string);
var i,z:integer;
begin
if preload then
begin
//doubletten vermeiden
z:=0;
for i := 1 to icmax do
if icname[i]=fname then
begin
z:=0;
break;
end;
if z=0 then
begin
inc(icmax);
IC[icmax]:=TBitmap.Create;
IC[icmax].LoadFromFile(Folder_Images+fname);
icname[icmax]:=fname;
end;
end;
end;
procedure showImage(t:TImage;fname:string);
var i,z:integer;
begin
if preload then
begin
z:=0;
for i := 1 to icmax do
if icname[i]=fname then
begin
z:=0;
break;
end;
if z>0 then
t.Picture.Bitmap.Assign(IC[z]);
end
else
begin
//hier nur den regulären loadfromfile durchführen
end;
end;