Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Problem mit Variablen bei for-Schleife (https://www.delphipraxis.net/16981-problem-mit-variablen-bei-schleife.html)

LoW_FloW 26. Feb 2004 15:53


Problem mit Variablen bei for-Schleife
 
Ich habe ein Problem mit den Variablen bei der for-Schleife. Ich hab ne for-Schleife gemacht, damit ich nicht alle Images extra eingeben muss. Es kommt aber beim compilieren des folgenden Sorce der Fehler: Undefinierter Bezeichner 'Image'
Delphi-Quellcode:
for i := 1 to 34 do begin
  if (X >= Image(i).Left) and (X <= Image(i).Left+Image(i).Width ) and
      (Y >= Image(i).Top ) and (Y <= Image(i).Top +Image(i).Height)
  then label1.Caption := 'JIIIHA' else label1.Caption := 'RAMSIIIM' ;
  end;
end;
Ist bestimmt wieder so eine Kleinigkeit, aber ich bin nicht drauf gekommen :wall: . Ihr Profis wisst bestimmt ne Lösung, wie immer :thuimb: .

Luckie 26. Feb 2004 15:55

Re: Problem mit Variablen bei for-Schleife
 
Image(i)

So kannst du keine Images ansprechen. Hier im Forum suchenFindComponent heißt das Zauberwort.

sakura 26. Feb 2004 15:56

Re: Problem mit Variablen bei for-Schleife
 
Du kannst mit Image(i) wenn i = 1 nicht auf Image1 zugreifen. Die Lösung wären in Deinem Fall die Nutzung von [dp]Array*[/dp]s.

...:cat:...

czapie 26. Feb 2004 15:56

Re: Problem mit Variablen bei for-Schleife
 
Na das Problem liegt nicht bei der Schleife, sondern die Varible "Image" ist nicht bekannt,

entweder hast du vergessen sie in der Funktion zu deklarieren, oder global nicht deklariert,
oder vielleicht soll es auch Form1.Image.... heißen, guck mal nochmal.

[Edit] Sorry, war zu spät, die anderen haben recht [/Edit]

Czapie.

Luckie 26. Feb 2004 16:00

Re: Problem mit Variablen bei for-Schleife
 
Aber auch nur das wird ihm nicht helfen.

LoW_FloW 26. Feb 2004 17:43

Re: Problem mit Variablen bei for-Schleife
 
Okay ich habs jetzt mal mit der Findcomponent-Methode versucht...Jetzt tritt der Fehler Inkompatible Typen: 'Integer' und 'TImage' auf. Es wird wahrscheinlich mit dem +'.Left' zutun haben...Hier der source:
Delphi-Quellcode:
procedure TForm1.imgBackroundMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i, j : integer ;
begin
for i := 1 to 34 do begin
    j := (findcomponent('Image'+inttostr(i)+'.Left') as TImage) ;
    if X >= j
//  if (X >= Image(i).Left) and (X <= Image(i).Left+Image(i).Width ) and
//      (Y >= Image(i).Top ) and (Y <= Image(i).Top +Image(i).Height)
  then label1.Caption := 'JIIIHA' else label1.Caption := 'RAMSIIIM' ;
  end;
end;
Bitte wieder um Hilfe und danke an Lukie für den Tipp mit Findcomponent :thuimb:

Kinimod8 26. Feb 2004 17:50

Re: Problem mit Variablen bei for-Schleife
 
Delphi-Quellcode:
procedure TForm1.imgBackroundMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i, j : integer ;
begin
for i := 1 to 34 do begin
    j := (findcomponent('Image'+inttostr(i)) as TImage).Left;
    if X >= j
//  if (X >= Image(i).Left) and (X <= Image(i).Left+Image(i).Width ) and
//      (Y >= Image(i).Top ) and (Y <= Image(i).Top +Image(i).Height)
  then label1.Caption := 'JIIIHA' else label1.Caption := 'RAMSIIIM' ;
  end;
end;
So müsste es gehen...

Du darfst Left nicht in FindComponent reintun :wink:

czapie 26. Feb 2004 17:52

Re: Problem mit Variablen bei for-Schleife
 
Mh,

lass mal das .left im Argument für findcomponent weg, und hole dir den Wert erst danach wenn du die Kompo hast. Image.Left ist eine Eigenschaft von TImage vom Datentyp Integer.
Definier also eine Variable vom Typ TImage -> Findcomponent -> Varible.Left .

[Edit] Verdammt, bin ich heut langsam[/Edit]

Czapie.

LoW_FloW 26. Feb 2004 18:00

Re: Problem mit Variablen bei for-Schleife
 
Zitat:

Zitat von Kinimod8
Delphi-Quellcode:
procedure TForm1.imgBackroundMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  i, j : integer ;
begin
for i := 1 to 34 do begin
    j := (findcomponent('Image'+inttostr(i)) as TImage).Left;
    if X >= j
//  if (X >= Image(i).Left) and (X <= Image(i).Left+Image(i).Width ) and
//      (Y >= Image(i).Top ) and (Y <= Image(i).Top +Image(i).Height)
  then label1.Caption := 'JIIIHA' else label1.Caption := 'RAMSIIIM' ;
  end;
end;
So müsste es gehen...

Du darfst Left nicht in FindComponent reintun :wink:

THX so geht alles :coder:


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 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