Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   effizienter? (https://www.delphipraxis.net/84767-effizienter.html)

Trotzdem 21. Jan 2007 14:04


effizienter?
 
Hallo!

ich hab nur eine ganz kurze frage, und zwar haben wir in der schule kurz angeschnitten, dass man mit

Variablendeklaration: var Bezeichner: array[indexbereich] of datentyp
Typdeklarartion: type TBezeichner=array[indexbereich] of datentyp
var Bezeichner: TBezeichner

viel effizienter z.b. 100 zufallszahlen ziehen kann, nämlich durch

for i:=1 to 100 do
z[i]:=random(6)+1;

meine frage:
lässt sich dies auch auf image-felder anwenden? also wenn ich für 100 images dasselbe tun will (beispielsweise ein rechteck zeichnen) müsste ich doch 100 mal folgende zeile schreiben:

image1.canvas.rectangle(0,0,width,height);
image2.canvas.rectangle(0,0,width,height);
.
.
.
image100.canvas.rectangle(0,0,width,height);

kann man das nicht effizienter machen, also auch irgendwie in dieser form:
for i:=1 to 100 do
image[i].canvas.rectangle(0,0,width,height);

??? es sollte aber nicht allzu kompliziert sein, da ich erst seit 1,5 jahren mit delphi arbeite und nur grundkenntnisse habe!
schon mal vielen dank für eure hilfe im voraus!

3_of_8 21. Jan 2007 14:10

Re: effizienter?
 
1,5 Jahre? Das ist doch eh schon etwas länger. Mit FindComponent geht das, allerdings ist das sehr schlechter Stil. Du könntest einfach alle Images in ein Array packen.

Dazu sei gesagt, dass das Zeichnen von 100 Rechtecken ziemlich unperformant ist.

himitsu 21. Jan 2007 14:10

Re: effizienter?
 
entweder du legst alle Images in einem Array ab und gleifst dann so zu,

oder du suchst diese Komponenten:
Delphi-Quellcode:
TImage(FindComponent('image' + IntToStr(i))).canvas.rectangle(0,0,width,height);

Trotzdem 22. Jan 2007 15:44

Re: effizienter?
 
Zitat:

Zitat von 3_of_8
1,5 Jahre? Das ist doch eh schon etwas länger. Mit FindComponent geht das, allerdings ist das sehr schlechter Stil. Du könntest einfach alle Images in ein Array packen.

Dazu sei gesagt, dass das Zeichnen von 100 Rechtecken ziemlich unperformant ist.

1. wie packe ich denn die images in ein array? also wie sieht das quelltextmäßig aus?
2. was heißt unperformant???

mkinzler 22. Jan 2007 15:51

Re: effizienter?
 
Zitat:

1. wie packe ich denn die images in ein array?
Wenn man sie manuell im Code erzeugt, kann man die Referenzen in einem array ablegen, oder wenn man sie öfters braucht, die Instanzen aber in der IDE erzeugt hat kann man die Referenzen in einer Schleife einmalige per .FindComponent() ermitteln und so im Array ablegen.
Zitat:

also wie sieht das quelltextmäßig aus?
Delphi-Quellcode:
Bilder[i] := Timage.create( self);
bzw.
Delphi-Quellcode:
Bilder[i] := (Form.FindComponent('Bild'+IntToStr(i)) as TImage);


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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-2025 by Thomas Breitkreuz