Zufälliges Bild anzeigen lassen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
gongfu
Beiträge: 1
Registriert: Fr 15. Apr 2011, 12:16

Zufälliges Bild anzeigen lassen

Beitrag von gongfu »

Hallo allerseits,

ich versuche gerade nach 3 jähriger Abstinenz von Informatik mir ein kleines Programm zu basteln, das einen Zweck erfüllen soll: Es soll auf Klick ein zufälliges Bild aus meiner Bilddatenbank anzeigen. Dabei heißen sämtliche Bilder 000001.jpg ... 000002.jpg etc. Möchte das Programm gerne verwenden, um mit Freunden alte Bilder durchschauen zu können, halt ohne vorher zu wissen, "ah jetzt kommt das bild".

Ich hatte angefangen mit randomize und einem integer um die Zufallszahl zu erzeugen, hab nun aber keine Ahnung, wie ich denn nun das Bild ins Programm laden kann. Meine einzigen Pascal-Erfahrungen sind leider nach dem Abi in der Schule geblieben. Würd mich freuen, wenn ihr vielleicht 'nen Tipp hättet :)

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Zufälliges Bild anzeigen lassen

Beitrag von Maik81ftl »

Hmmm

Code: Alles auswählen

TPicture.loadfromfile(inttostr(a)+'.jpg');
könnte Helfen, wobei a der wert des Zufallgenerators ist.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Zufälliges Bild anzeigen lassen

Beitrag von MAC »

genau.
Allerdings, kann man das noch ein bisschen verfeinern.
1. wir sollten sicherstellen das die datei auch wirklich existiert (sonnst kommt ein unschöner error)
2. Sollte vielleicht kein Bild doppelt vorkommen ???

Was ich empfehle:

global:

Code: Alles auswählen

var
   zsarray:array of integer;
end;
beim starte

Code: Alles auswählen

setlength(zarray,<so_lange_wie_du_willst_wieviele_bilder_du_hast_..._>);
for i := 0 to high(zarray) do zarray[i] := i+1; // Die 1te position wird 1 die 2.te 2...
jetzt beim neuen Bild anzeigen:

Code: Alles auswählen

x := random(length(zarray)); // wir nehmen uns eine zahl
for i := x to high(zarray)-1 do zarray[i] :) zarray[i+1]; // wir löschen die genommene Zahl
setlength(zarray,length(zarray)-1);
astring := InttoStr(x);
while (length(astring) < 100) and (not fileexists(GetCurrentDir + astring + erweiterung {erweiterung ist '.jpg' })) do
  begin  // die hundert ist dafür da, das er das nicht bis ins unendliche macht und das programm abstürtzt,,,   GetCurrentDir gibt den Pfad deines Programmes an ... du kannst natürlich auch so nen ladedialog machen...
  astring := '0' + astring;
  end;
if fileexists(GetCurrentDir + astring + erweiterung) then
   begin
   TPicture.loadfromfile(GetCurrentDir + astring + erweiterung);
   end;


TPicture.loadfromfile(inttostr(a)+'.jpg');



Edit: so bin nach langem veschäftigt sein mal wieder da.. :D

Code: Alles auswählen

Signatur := nil;

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2809
Registriert: Fr 22. Sep 2006, 19:32
OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
CPU-Target: x86, x64, arm
Wohnort: Berlin
Kontaktdaten:

Re: Zufälliges Bild anzeigen lassen

Beitrag von m.fuchs »

Code: Alles auswählen

TPicture.loadfromfile(Format('%.6d', [1])  + '.jpg';  );
Dann klappt es auch mit den führenden Nullen.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Maik81ftl
Beiträge: 619
Registriert: Mi 9. Mär 2011, 16:34
OS, Lazarus, FPC: Ubuntu10.04 LTS (L 0.9.31.0 FPC 2.4.4)
CPU-Target: 64Bit
Wohnort: seit 01.06.2011 in Wahlstedt

Re: Zufälliges Bild anzeigen lassen

Beitrag von Maik81ftl »

nun MAC. etwas nachdenken lassen wollt i ihn ja auch -.-

weiß ja selber, wie schwer es ist nach jahren wieder rein zu kommen, aber was man ein mal kann kann man immer sagten einig imma zu mir. Aber hast recht. wir sind ja hier, um zu helfen.
Ubuntu 10.04 LTS ist meine Heimat. Lazarus ist meine Sprache :D und der Kreis Segeberg meine LIEBE :D

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Zufälliges Bild anzeigen lassen

Beitrag von pluto »

Warum nicht das ganze einfach in ein TImage anzeigen lassen? Dort gibt es ja auch eine Eigenschaft: Picture die die Klasse TPicture verwendet. Einfacher geht es nun wirklich nicht mehr oder?
MFG
Michael Springwald

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Zufälliges Bild anzeigen lassen

Beitrag von carli »

Warum benennst du die Bilder so kryptisch?
Das ist gar nicht nötig, wenn du das Zufallsbild nicht aus dem Namen der Bilddatei, sondern der Liste von vorhandenen Bildern generierst.
Einfach ein FindFirst/FindNext über den Ordner laufen lassen und das ganze in eine Liste (TStringList) stecken, schon lässt sich ein zufälliges, definitiv existierendes Bild aussuchen.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Zufälliges Bild anzeigen lassen

Beitrag von pluto »

Einfach ein FindFirst/FindNext über den Ordner laufen lassen und das ganze in eine Liste (TStringList) stecken, schon lässt sich ein zufälliges, definitiv existierendes Bild aussuchen.
Brauchst du noch nicht einmal. Es gibt Fertige Funktionen. Zumindest in Lazarus. Die Liefern den angeben Ordner als StringList zurück wahlweise mit Unterverzeichnisse oder nicht.

Du könntest auch die FileListBox nutzen. Dort kann man zwar nicht den Ordner Wechseln, aber vielleicht das ist ja was. Oder du nutzt meine Komponenten, dort kann man auch den Ordner wechseln.
MFG
Michael Springwald

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Zufälliges Bild anzeigen lassen

Beitrag von carli »

pluto hat geschrieben:
Einfach ein FindFirst/FindNext über den Ordner laufen lassen und das ganze in eine Liste (TStringList) stecken, schon lässt sich ein zufälliges, definitiv existierendes Bild aussuchen.
Brauchst du noch nicht einmal. Es gibt Fertige Funktionen. Zumindest in Lazarus. Die Liefern den angeben Ordner als StringList zurück wahlweise mit Unterverzeichnisse oder nicht.
wo?
ich hab so ne Funktion selbst implementiert (naja 10 Zeilen ..)

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Zufälliges Bild anzeigen lassen

Beitrag von pluto »

wo?
ich hab so ne Funktion selbst implementiert (naja 10 Zeilen ..)
In der Unit fileutil sind einige Hilfreiche Funktionen.
MFG
Michael Springwald

MAC
Beiträge: 770
Registriert: Sa 21. Feb 2009, 13:46
OS, Lazarus, FPC: Windows 7 (L 1.3 Built 43666 FPC 2.6.2)
CPU-Target: 32Bit

Re: Zufälliges Bild anzeigen lassen

Beitrag von MAC »

könnte man auch machen, aber wenn die bilder schon so benannt sind :D
wieso ich TPicture verwendet habe ? Copy + Paste :D

Code: Alles auswählen

Signatur := nil;

Antworten