![]() |
mehrere fast gleichnahmige Jpg fast gl.namig. TImages zuweis
Hi sorry aber mir ist echt kein passender Titel eingefallen :)
Ich möchte gerne das mein programm eine Zufallszahl erzeugt, diese soll dann an den LoadFromFile pfad angehengt werden... KlarText: Zufällige Nr -> 6 ........... -> Lade Bild KarteNr.G.jpg Ich hab da schon mal was versucht, aber so klappts nicht, denn hier müsste ich als Parameter übergeben:
Delphi-Quellcode:
was ganz nebenbei auch noch zu ner fehlermeldung führt (zugriffsverletzung)...
Austeilen([Image1],2);
Haben möchte ich:
Delphi-Quellcode:
hat jemand einen vorschlag?
Austeilen([Image],2);
Anbei mein Versuch...
Delphi-Quellcode:
procedure TFormMain.Austeilen(Card: array of TImage; prunde: Integer);
var i: Integer; begin for i := 1 to prunde do begin Card[i].Picture.LoadFromFile(X+'CardRED0'+IntToStr(i)+'.jpg'); end; end; |
Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.
Hi,
ist die jeweilige Instanz aus dem TImage Array erstellt worden? Also: Image1 := TImage.Create(); Ich würde vorher mit FileExists() prüfen ob die Datei existiert. Bei LoadFromFile() steht eine Variable X und auch sonst um wirklich zu sagen woran der Fehler liegt fehlt ein bisschen Quellcode. So eine Übersicht wäre nicht schlecht. Grüße |
Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.
Was fehlt denn ?
Also was brauchst du noch.. und die Variable im LoadFromFile brauch ich ja... Es gibt im Ordner verschiedene dateien im Ordner (Globale Variable X = ExtractFilePath(ParamStr(0)); ) die alle vom Namen her durchnummeriert sind... Beispiel CardRED01.jpg CardRED02.jpg CardRED03.jpg ect. |
Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.
Hallo,
die Frage ist eher was fehlt dir, was brauchst du, was willst du? Ganz verstanden habe ich es nicht, dennoch ein paar Hinweise: An deiner Stelle würde ich die Dateinamen in einem Array verwalten. Das hat zum Einen den Vorteil, dass du die Dateinamen beliebig wählen kannst und zum Anderen leichten Zugriff auf die Dateinamen hast:
Delphi-Quellcode:
Dann kannst du eine Zufallszahl erzeugen:
const CardImgFilenames: array[0..5] of string = (
'CardRED01.jpg', 'CardRED02.jpg', 'CardRED03.jpg', 'CardBLACK01.jpg', 'CardBLACK02.jpg', 'CardBLACK03.jpg' );
Delphi-Quellcode:
Und dir daraus den Dateinamen zusammen basteln:
Num := Random(6);
Delphi-Quellcode:
Dann machst du dir daraus eine Funktion und fertig.
Filepath := ExtractFilePath(ParamStr(0)) + CardImgFilenames[Num];
Wenn du nur ein einziges TImage-Array hast, würde ich das übrigens nicht als Parameter übergeben, sondern nur den Index des Bildes (ImgNum). Dann kannst du darauf zugreifen wie eben gezeigt:
Delphi-Quellcode:
Grüße, Matze
ImgArray[ImgNum].Picture.LoadFromFile(Filepath);
Edit: Bitte ändere noch den Titel. Sonst weiß keiner, worum es hier geht. |
Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.
Jetzt müsste ich den Fehler gefunden habe, wenn du die Prozedur mit nur einer Bild Komponente aufrufst sieht das Array so aus:
Array[0] = Image1 Du startest aber mit der Schleife schon bei 1 das geht aber schief, da im Array insgesamt nur 1 Element ist. |
Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.
Zitat:
Poker, 17&4, welches soll es denn sein? Schreib doch einfach, was du letztendlich erreichen möchtest. Mit deinem wirren Text lockst du hier viele auf die falsche Fährte. Bei einem Kartenspiel kannst du die Bilder alle Spielkarten ohne weiteres in sortierter Reihenfolge laden und dann gezielt durch "Mischen" in Unordnung bringen. Eine Spielkarte besteht ja nicht nur aus ihrem Bild, sondern hat auch einen Namen und weitere Eigenschaften (rot oder schwarz, Kreuz|Herz|Pik|Karo). Daher sollten die Kartendaten in einem Record oder noch besser in einer Klasse gespeichert werden. |
Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.
ok danke mal schaun wie weit ich komm...
was glaub ich noch nicht ganz klar geworden ist ist wohl folgendes: Ich hab 20 Image Komponenten die heißen alle Card1,Card2,Card3,ect. denen will ich automatisch ein Bild zuordnen also so zu sagen in ner schleife also so das wenn ich die prozedur austeilen aufrufe folgendes passiert: PseudoCode:
Delphi-Quellcode:
[Edit] Das Spiel kennt eh keiner... Aber das mit der Klasse stimmt... warscheinlich ist das die bessere Lösung
begin
für lauf:=0 bis Rundenanzahl tue zufallszahl erzeugen | Bsp. 6 Karte|lauf|.Picture.LoadFromFile(PfadBisZumOrdner+Dateiname+Zufallszahl+.jpg) -->Bsp. Card2.Picture.LoadFromFile(C:Dokumente und Einstellungen\User\Desktop\Ordner\CardRed6.jpg) end |
Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.
Ah, dann kannst du die Images entweder in ein Array packen, wie erwähnt, oder du nutzt
![]()
Delphi-Quellcode:
Oder so ähnlich. ;)
(FindComponent('Card' + IntToStr(Num)) as TImage).Picture.LoadFromFile(...);
Grüße, Matze Edit: Denke an den Titel. Klicke dazu beim ersten Beitrag auf "edit" und trage einen vernünftigen Titel ein. Aktuell findet das über die Suchfunktion kaum einer. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:36 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