Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Variablen in Objektnamen verwenden? (https://www.delphipraxis.net/159272-variablen-objektnamen-verwenden.html)

Sluak 21. Mär 2011 11:32

Variablen in Objektnamen verwenden?
 
Hallo

Es geht um folgendes Problem: Ich schreibe gerade ein Memory Spiel mit Delphi. Dabei gibt es 30 Bilder der einzelnen Karten. Nun möchte ich(wenn zwei Karten gezogen wurden, die nicht übereinstimmen) die Karten wieder umdrehen.
Derzeit wäre mein einziger Lösungsansatz dafür, dem Array (was die Koordinaten der Karten in der Form darstellt) einen Wert zB 0 zuzuweisen und dann per If then Schleife die Karten wieder zurück zum Deckblatt zu führen.

Das Problem an der ganzen Sache ist, dass so bei 30 Bildern mindestens 100 Zeilen entstehen, die weder übersichtlich, noch praktisch sind.

Gibt es eine Möglichkeit, zB um eine Variable x:Integer in den Objektnamen einzubringen?
Beispiel:
Statt bisher Image1.Picture.LoafFromFile(...);
möchte ich nun also ImageX.Picture.LoadFromFile(...);

Bei google fand ich bisher leider absolut nichts. :(

Könnt ihr mir vielleicht helfen?


mit freundlich(st)en Grüßen
Sluak :P

mkinzler 21. Mär 2011 11:34

AW: Variablen in Objektnamen verwenden?
 
Schau dir mal FindComponent() an

pustekuchen 21. Mär 2011 11:41

AW: Variablen in Objektnamen verwenden?
 
Danke. Genau das hab ich mich vor 10 min auch gefragt^^

So könnte es aussehen:
Delphi-Quellcode:
(FindComponent('Image' +IntToStr(choice+1)) as TPicture).LoadFromFile(....);

Sluak 21. Mär 2011 11:51

AW: Variablen in Objektnamen verwenden?
 
Delphi-Quellcode:
For i:=1 to 30 do
begin
(FindComponent('Image'+IntToStr(i)) as TPicture).LoadFromFile('bilder\deckblatt.bmp');
end;
Leider kommt dabei bei mir folgende Fehlermeldung: [Fehler] Memory.pas(149): Undefinierter Bezeichner: 'LoadFromFile'

Neutral General 21. Mär 2011 11:52

AW: Variablen in Objektnamen verwenden?
 
Hallo,

Es muss so aussehen:

Delphi-Quellcode:
for i:=1 to 30 do
begin
  (FindComponent('Image'+IntToStr(i)) as TImage).Picture.LoadFromFile('bilder\deckblatt.bmp');
end;
Gruß
Neutral General

Bummi 21. Mär 2011 11:53

AW: Variablen in Objektnamen verwenden?
 
Delphi-Quellcode:
For i:=1 to 30 do
begin
TImage(FindComponent('Image'+IntToStr(i)).LoadFromFile('bilder\deckblatt.bmp');
end;

Neutral General 21. Mär 2011 11:54

AW: Variablen in Objektnamen verwenden?
 
PS: Die Dinger auf dem Formular heißen "TImage" :wink:

WM_CLOSE 21. Mär 2011 11:54

AW: Variablen in Objektnamen verwenden?
 
Zitat:

Zitat von Sluak (Beitrag 1090020)
Delphi-Quellcode:
For i:=1 to 30 do
begin
(FindComponent('Image'+IntToStr(i)) as TPicture).LoadFromFile('bilder\deckblatt.bmp');
end;
Leider kommt dabei bei mir folgende Fehlermeldung: [Fehler] Memory.pas(149): Undefinierter Bezeichner: 'LoadFromFile'

tausch das aus:

Delphi-Quellcode:
For i:=1 to 30 do
begin
(FindComponent('Image'+IntToStr(i)) as TImage).Picture.LoadFromFile('bilder\deckblatt.bmp');
end;

Bummi 21. Mär 2011 11:57

AW: Variablen in Objektnamen verwenden?
 
@Neutral General

uuuppps, danke, habe gepennt

Sluak 21. Mär 2011 12:01

AW: Variablen in Objektnamen verwenden?
 
Vielen, vielen Dank.
Es funktioniert (wie auch nicht anders zu erwarten :P)

EDIT: Geht das auch mit Prozeduren?

Delphi-Quellcode:
procedure TForm1.Image1Click(Sender: TObject);
begin
BildKlick(1,0,0);
Image1.Picture.LoadFromFile('bilder\'+IntToStr(i)+'.jpg');
Etwas dergleichen habe ich auch 30 mal derzeit in dem Programm stehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr.
Seite 1 von 3  1 23      

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