Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi For Schleife bei mehreren Checkboxen (https://www.delphipraxis.net/110663-schleife-bei-mehreren-checkboxen.html)

Circle 21. Mär 2008 23:39


For Schleife bei mehreren Checkboxen
 
Hallo Leute

Jetzt kommt ne bissl blöde Frage, bei der sich wahrscheinlich die meisten an die Stirn langen werden ^^, aber muss trotzdem fragen.

Ich habe 12 Checkboxen die ich alle mit einer For-Schleife abfragen will. Ich dacht immer das sollt irgendwie so gehen. Ich geb nen Beispielcode.

Delphi-Quellcode:
for i := 1 to 12 do begin
    if Form1.CBuff[i].Enabled = True then begin
      Form1.TBuff[i].Intervall = StrToInt(Form1.SBuff[i].Text) * 1000;

Das Problem ist jetzt wie ihr wahrscheinlich schon bemerkt habt hier "CBuff[i]" in meinen Augen sollte der Compiler das dann als "CBuff1" "CBuff2" usw. verstehen, tut er aber nicht ^^
Ich weiss es gibt ne Möglichkeit wie das geht, ich weiss nur nicht mehr wie. Ist echt ewigs her seid ich ma mit Delphi gearbeitet hab.
Hoffe mir kann wer helfen, wenns niemandem zu grosse Umstände macht.

Christian Seehase 21. Mär 2008 23:46

Re: For Schleife bei mehreren Checkboxen
 
Moin Circle,

such' hier mal nach Hier im Forum suchenFindComponent.
Das Thema kommt öfter ;-)

BTW:
Einen boolschen Ausdruck sollte man nie auf Gleichheit prüfen, vor allem nicht auf gleich true.
Würde in Deinem Falle zwar funktionieren, aber ich halte es für besser sich gar nicht erst daran zu gewöhnen.
Begründung: U.a. in der Windows-API ist true jeder Wert ungleich 0 und false 0.

So
Delphi-Quellcode:
if Form1.CBuff[i].Enabled then begin
wäre es besser.
(und wie ich finde auch besser lesbar)

sx2008 21. Mär 2008 23:47

Re: For Schleife bei mehreren Checkboxen
 
Zitat:

Zitat von Circle
Ich habe 12 Checkboxen die ich alle mit einer For-Schleife abfragen will.

Schau dir mal die TCheckListBox an!!

sx2008 21. Mär 2008 23:50

Re: For Schleife bei mehreren Checkboxen
 
Zitat:

Zitat von Christian Seehase
So
Delphi-Quellcode:
if Form1.CBuff[i].Enabled then begin
wäre es besser.
(und wie ich finde auch besser lesbar)

Und das spart sogar Prozessorzeit (na ja im Microsekundenbreich), weil der JZ (Jump Zero) Befehl benützt werden kann.

Jelly 22. Mär 2008 09:21

Re: For Schleife bei mehreren Checkboxen
 
Zitat:

Zitat von Circle
Delphi-Quellcode:
for i := 1 to 12 do begin
    if Form1.CBuff[i].Enabled = True then begin
      Form1.TBuff[i].Intervall = StrToInt(Form1.SBuff[i].Text) * 1000;

Dazu fallen mir noch 2 Sachen auf:
  • Lass das Form1 weg, wenn du dich innerhalb der TForm1 Klasse bewegst. Es sieht zumindest danach aus, dass du das machst. Mit Form1 greifst du explizit auf eine Instanz von TForm1 zu. Wenn du irgendwann eine 2. Instanz von TForm1 erstellst (z.B. Form1Ex), dann greift dein Code auf die falsche Instanz zu
  • TBuff ist eine schlecht Namensgebung für eine Komponente (sieht mir nach einem Timer aus bei dir). Unter Delphi gibt es die Konvention, dass Klassendeklarationen und Typen ganz allgemein mit einem T als Präfix geschrieben werden. Wenn deine Variable jetzt TBuff heisst, ist das nur irritierend.


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