Moin...
Hier sind ja schom viele gute Hinweise gegeben worden.
Ich schätze einmal,du möchtest so etwas wie "Picture of the Day" für dein Programm programmieren?
Randomize; sollte nur einmal ausgeführt werden,persönlch rufe ich diese Funktion im TForm.Create Ereignis einmal auf,dann nie mehr wieder.
Dein System mit Integer+'.png' erscheint im ersten Moment eine gute Idee. Im 2. Moment ist die Idee dann doch nicht mehr so genial.
Die Erfahrung habe ich auch schon gesammelt.
Dumm ist es wenn es plötzlich kein PNG mehr ist,sondern ein BMP oder JPG und noch dümmer ist,wenn genau der Integer Wert fehlt,den du vielleicht per Zufall ausgewählt hast.
Und glaub mir,wenn du regelmäßig mal Dateien in den Bilderordner kopierst um mehr Bilder zu haben,wird es nervig die Dateien vorher immer per Hand umbenennen zu müssen.
Wie gesagt,da war ich schon einmal und musste feststellen das die Idee dann doch nicht so prall war.
Stattdesen habe ich es dann so gelöst,das der "Bilderordner" nach allen Dateien durchsucht wird und von diesen dann genau einer per Zufall genommen wird.
Das hat den Vorteil,das du nicht auf PNG beschränkt bist und der Dateiname keine Rolle spielt.
Code: Alles auswählen
procedure Tform1.PicOfDay;
var i: integer;
LPfad : String;
LStrList : TStringlist;
LSearchRec: TSearchRec;
begin
//Hier jetzt eine Dateiliste des Bilderordners erstellen
LPfad :=ExtractFilePath(ParamStr(0))+'Pictures\' ; //Ordnerpfad gegebenfalls auf eigene Bedürfnisse anpassen,
LStrList := TStringlist.Create;
if FindFirst(LPfad + '*.*', faAnyFile, LSearchRec) = 0 then
begin
repeat
if LSearchRec.Attr and faDirectory = 0 then
begin
LStrList.add(LSearchRec.Name);
end;
until FindNext(LSearchRec) <> 0;
FindClose(LSearchRec);
end;
//Hier Bild des Tages anzeigen
i:=Random(LStrList.Count-1);
image2.Visible:=false;
image2.Picture.Clear;
try
image2.Picture.LoadFromFile(LPfad+LStrList[i]);
image2.Visible:=true;
except
//Hier jetzt ein "Ersatzbild" laden oder wie derzeit einfach nichts machen
image2.Visible:=false;
end;
image2.visible:=true;
LStrList.Free;
end;
Wie gesagt,ist alles trotzdem recht einfach gehalten,man könnte noch mit FileExists arbeiten,wenn man den möchte. Ist auch nur zur Veranschaulichung.
Hat zumindest bei mir damals seinen Zweck erfüllt
Cya de Helge