Hi,
ich lasse mit folgender Procedure einen Ordner einlesen. Es wird ein Datei-Filter verwendet:
Delphi-Quellcode:
procedure GetAllFilesEM(Path, ExtMask: String; List: TStrings;
SubFolder: Boolean);
var
Attrib, k: Integer;
Search: TSearchRec;
begin
Attrib := faArchive + faReadOnly + faHidden;
if Path[Length(Path)] <> '\' then Path := Path + '\';
with TStringList.Create do
try
CommaText := ExtMask;
for k := 0 to Count - 1 do
if FindFirst(Path + '*.' + Strings[k], Attrib, Search) = 0 then
repeat
List.Add(AnsiUpperCase(Path + Search.Name));
until FindNext(Search) <> 0;
FindClose(Search);
finally Free end;
if SubFolder then
begin
if FindFirst(Path + '*.*', faDirectory, Search) = 0 then
begin
repeat
if ((Search.Attr and faDirectory) = faDirectory) and
(Search.Name[1] <> '.') then
GetAllFilesEM(Path + Search.Name, ExtMask, List, SubFolder);
until FindNext(Search) <> 0;
FindClose(Search);
end;
end;
end;
Der Aufruf:
Delphi-Quellcode:
procedure TForm4.Button1Click(Sender: TObject);
begin
if jvdirectoryedit1.text='' then
begin
ShowMessage('Bitte einen Grafikordner angeben!');
end
else
if SpinEdit1.Text='0' then
begin
ShowMessage('Der Interval muss min. 1 Sekunde betragen!');
end
else
begin
form1.timer1.interval:=strtoint(spinedit1.Text + '000'); //000 dazu zählen da angabe in milisekunden und nicht in sekunden
GetAllFilesEM(jvdirectoryedit1.Text, 'bmp, gif, jpg, ico, jpeg, png', form1.ListBox1.Items, false); //dateien einlesen
form1.timer1.enabled:=true;
close;
end;
end;
Das alles geschieht auf form4. die ganzen dateinamen werden in eine listbox auf form1 geladen, dies funktioniert auch.
Wenn ich nun folgende Procedure ausführe dauert es etwas und das Programm stürzt ab, ohne Meldungen...
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
i : Integer;
begin
for i:=0 to Listbox1.Count-1 do
begin
Image1.Picture.LoadFromFile(listbox1.Items.Strings[i]);
end;
end;
Wo liegt mein fehler?
Greetz und thx