Autor Beitrag
K.haos-Prinz
Hält's aus hier
Beiträge: 12



BeitragVerfasst: So 15.06.08 17:45 
Hey ho!
Auf guten Rat von einigen Usern hab ich mich mal mit der Findcomponent Methode vertraut gemacht, leider ist mir dabei ein Fehler unterlaufen, den ich selbst nicht finden kann. Die Procedure LadeGrafik wird aufgerufen und es passiert... gar nichts. Warum?


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
 procedure LadeGrafik;
Var Feld: string;
Var I   : word;

begin

    for I := i to 10 do
    begin
    Feld := 'MainF.Form1.Image' + inttostr (I);
    TImage (MainF.Form1.FindComponent(Feld)).Picture.loadfromfile ('Hintergrund.bmp');
end;
end;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: So 15.06.08 18:06 
Moin!

user profile iconK.haos-Prinz hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
Feld := 'Image' + inttostr (I);					
Deine Images heißen weiterhin ImageX, schätze ich mal. :idea: ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
K.haos-Prinz Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: So 15.06.08 18:33 
Jop. Die Bilder heißen Image1, Image2, Image3 usw...
Kann es vielleicht mit dem MainF.Form1 war ich angefügt habe zusammenhängen?
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 15.06.08 18:36 
user profile iconK.haos-Prinz hat folgendes geschrieben:
Kann es vielleicht mit dem MainF.Form1 war ich angefügt habe zusammenhängen?

Ich glaube, genau das wollte user profile iconNarses dir mitteilen ;)

Du rufst ja schon die FindComponent von MainF.Form1 auf, da muss (darf!) das nicht auch noch im Komponentennamen drinstehen.

Grüße,
Yogu
K.haos-Prinz Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: So 15.06.08 18:42 
Stimmt ja, MainF.Form1 darf man nicht anfügen, da das ja sonst Doppelt wäre. Aber ich habe den Fehler grade gefunden und der is ja noch viel gemeiner! Ich könnte mich zwar grade schlagen, dass ich hier einen Quelltext mit einem so offensichtlichen und simplen Fehler reingestellt habe, aber das kann ich ja nun auch nicht mehr ändern.

Der Fehler liegt in der For-Schleife!
Mit For i := i to 10 wird das natürlich nichts!
Tut mir leid, dass ich den Quelltext vor dem Veröffentlichen nicht gründlich genug geprüft habe, wird zukünftig aber immer vorher getan!
wazup
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 101

Windows XP
Delphi 2009
BeitragVerfasst: So 15.06.08 19:04 
Hi...

Warum ist die Variable I überhaupt als Word deklariert??

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure LadeGrafik(const Datei: string);
var
  I: Integer;
begin
  for I := 0 to 10 - 1 do
    (FindComponent('Image' + IntToStr(I)) as TImage).LoadFromFile(Datei);
end;
So hätte ich es gemacht.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 15.06.08 19:12 
user profile iconwazup hat folgendes geschrieben:
Hi...

Warum ist die Variable I überhaupt als Word deklariert??

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure LadeGrafik(const Datei: string);
var
  I: Integer;
begin
  for I := 0 to 10 - 1 do
    (FindComponent('Image' + IntToStr(I)) as TImage).LoadFromFile(Datei);
end;
So hätte ich es gemacht.

Weil ein Word schon mehr als ausreicht. Ein Byte hätte sogar genügt. ;)
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: So 15.06.08 19:27 
user profile iconMarc. hat folgendes geschrieben:
user profile iconwazup hat folgendes geschrieben:
Warum ist die Variable I überhaupt als Word deklariert??

Weil ein Word schon mehr als ausreicht. Ein Byte hätte sogar genügt. ;)

Du kannst getrost einen Integer verwenden, bei 32Bit-Systemen werden sowieso immer 4 Byte reserviert. Und mit Integers können die Prozessoren am besten rechnen - also noch ein Grund nach der Einfachheit, keine Words oder Bytes als Laufvariablen zu verwenden.