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 mit unvollständiger Reihe (https://www.delphipraxis.net/3711-schleife-mit-unvollstaendiger-reihe.html)

Stanlay Hanks 26. Mär 2003 18:01


For Schleife mit unvollständiger Reihe
 
Hallo zusammen! Ich hätte da mal ne Frage:
Ich kann doch, damit ich nicht 20 durchnummerierten Edit Feldern einzeln einen Text zuweisen muss, eine For Schleife verwenden (heißt doch for- Schleife, oder?). Wenn ich das jetzt zusammen mit FindComponent mache sieht das bei mir so aus.

Code:
For AnzahlN:=1 to AnzahlN do
(FindComponent('Button'+IntToStr(ButtonNummer)) as TButton).free;
Die ButtonNummer Variable wird immer um 1 vergrößert.

So, meine Frage. Kann ich das auch machen, wenn die Reihe von Button Namen unterbrochen ist? Also, wenn es z.B. Button1,2,3,4,6,7,8,9 und 10 gibt aber keinen Button 5. Gibt es da vielleicht irgendeine Methode die überprüft, ob ein Objekt existiert?

Danke schon mal. Man liest sich.
:bouncing4: Stanlay :bounce1:

Daniel B 26. Mär 2003 18:26

Hallo Stanley,

soweit hast Du recht und hier der Code wie man z.B. eine bestimmte Zahl ausschliessen kann.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  iFor: Integer;
begin
  for iFor := 0 to 9 do
  begin
    if iFor = 5 then
    begin
      ShowMessage('Tue hier was wenn die Zahl = 5 ist');
    end
    else
    begin
      ShowMessage('Tue hier was bei allen anderen Zahlen');
    end;
  end;
end;
Grüsse, Daniel :hi:

jbg 26. Mär 2003 18:31

Zitat:

For AnzahlN:=1 to AnzahlN do
Das dürfte wohl ein Tippfehler sein. Also werde ich es mal so stehen lassen.
Du solltest die Nummerrierung vielleicht auf 0..Anzahl-1 ändern, damit du nicht durcheinander kommst, da alle von Borland bereitgestellten Funktionen auf diese Art benutzen.


Der Typecast nach TButton ist nicht nötig, da jede Komponente auch die Methode .Free besitzt, die den passenden Destructor aufruft.


Zitat:

Gibt es da vielleicht irgendeine Methode die überprüft, ob ein Objekt existiert?
Ja. FindComponent liefert nil, wenn die Komponente nicht vorhanden ist. Und die Methode .Free überprüft vor dem Destruktor-Aufruf, ob das Objekt vorhanden ist, also ungleich nil ist.
(Der as Operator produziert bei "nil as TButton" eine EInvalidCast Exception)

Delphi-Quellcode:
for ButtonNummer := 1 to AnzahlN do
  FindComponent('Button' + IntToStr(ButtonNummer)).Free;

Stanlay Hanks 26. Mär 2003 19:21

Cool. Ich glaub' jetzt hab ichs verstanden. Danke.


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