AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi mehrere fast gleichnahmige Jpg fast gl.namig. TImages zuweis
Thema durchsuchen
Ansicht
Themen-Optionen

mehrere fast gleichnahmige Jpg fast gl.namig. TImages zuweis

Ein Thema von Fussel9 · begonnen am 29. Dez 2009 · letzter Beitrag vom 29. Dez 2009
Antwort Antwort
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#1

mehrere fast gleichnahmige Jpg fast gl.namig. TImages zuweis

  Alt 29. Dez 2009, 21:04
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:

Austeilen([Image1],2); was ganz nebenbei auch noch zu ner fehlermeldung führt (zugriffsverletzung)...
Haben möchte ich: Austeilen([Image],2); hat jemand einen vorschlag?
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;
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.

  Alt 29. Dez 2009, 21:24
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
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.

  Alt 29. Dez 2009, 21:42
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.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.

  Alt 29. Dez 2009, 21:52
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:
const CardImgFilenames: array[0..5] of string = (
  'CardRED01.jpg', 'CardRED02.jpg', 'CardRED03.jpg',
  'CardBLACK01.jpg', 'CardBLACK02.jpg', 'CardBLACK03.jpg'
);
Dann kannst du eine Zufallszahl erzeugen:

Num := Random(6); Und dir daraus den Dateinamen zusammen basteln:

Filepath := ExtractFilePath(ParamStr(0)) + CardImgFilenames[Num]; Dann machst du dir daraus eine Funktion und fertig.

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:

ImgArray[ImgNum].Picture.LoadFromFile(Filepath); Grüße, Matze

Edit: Bitte ändere noch den Titel. Sonst weiß keiner, worum es hier geht.
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.

  Alt 29. Dez 2009, 21:56
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.
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.

  Alt 29. Dez 2009, 22:03
Zitat von Fussel9:
Ich möchte gerne das mein programm eine Zufallszahl erzeugt, diese soll dann an den LoadFromFile pfad angehengt werden...
Warum schreibst du nicht, dass du ein Kartenspiel programmieren möchtest?
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.
fork me on Github
  Mit Zitat antworten Zitat
Benutzerbild von Fussel9
Fussel9

Registriert seit: 25. Mai 2009
322 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.

  Alt 29. Dez 2009, 22:03
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:
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
[Edit] Das Spiel kennt eh keiner... Aber das mit der Klasse stimmt... warscheinlich ist das die bessere Lösung
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Prozedur, die einem TImage Extr.FilePath+Name+Lauf+.jpg.

  Alt 29. Dez 2009, 22:06
Ah, dann kannst du die Images entweder in ein Array packen, wie erwähnt, oder du nutzt Delphi-Referenz durchsuchenFindComponent.

(FindComponent('Card' + IntToStr(Num)) as TImage).Picture.LoadFromFile(...); Oder so ähnlich.

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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz