![]() |
AW: Label[i]
Vielen Dank für die ganzen Vorschläge ich werde mir sie merken und anwenden, danke :D
LG Zeref |
AW: Label[i]
Delphi-Quellcode:
HardCast := TLabel(FindComponent('Label' + IntToStr(i))); // weißt einfach zu, ohne den Typ zu prüfen
SoftCast := (FindComponent('Label' + IntToStr(i)) as TLabel); // knallt, wenn es kein Label ist (NIL ist aber erlaubt, da es ja kein "falscher" Typ ist) if FindComponent('Label' + IntToStr(i)) is TLabel then ...; // prüft ob der Typ stimmt (nil ist nicht möglich, da nicht dieser Typ drin ist) |
AW: Label[i]
Oder einfach eine Funktion basteln, die mir die Labels übergibt.
Damit bist du unabhängig von der Namensgebung deiner Labels und kannst gezielt nur die Labels ansprechen, die wirklich benötigt werden, wenn noch mehr Label auf deiner Form vorhanden sind.
Delphi-Quellcode:
Function TForm1.GetLabel(aIndex:Integer):TLabel; begin case aIndex of 1:Result := Label1; 2:Result := Label2; 3:Result := LabelXYZ; 4:Result := Labelqqq; 5:Result := LabelWasWeisIch; else Result := nil; // Oder eine Exception end; end; |
AW: Label[i]
Oder Referenzen der benötigten Labels( oder allg. Controls) in einem/einer Array/Liste ablegen
|
AW: Label[i]
Zitat:
|
AW: Label[i]
IS und AS sind für Klassen/Objekte. (und neuerdings auch für Interfaces).
Pointer und alle anderen Typen kann man nur Hart casten, da in den "Daten" nirgendwo der Typ gespeichert/verlinkt wird, kann es da auch keine Laufzeitprüfung (Runtime) geben. Dort geht halt nur zur CompileTime. HardCast macht der Compiler (daher ist das auch ein paar Nanosekunden schneller) und SoftCast dein Programm. Achtung, es gibt beim Compiler ein paar Casts, die auch erst zur Laufzeit passieren. Reine HartCasts ändern keine Daten, sondern lassen dich nur anders rauf zugreifen. Bei WideString > AnsiString und ebenso bei Variants werden vom Compiler "Übersetungsfunktionen" aufgerufen. Und z.B. bei Interger zu Byte, mit aktiver Bereichsprüfung, wird nach dem Cast noch ein Prüfcode eingeaut. (
Delphi-Quellcode:
)
if WarÜberlauf then RaiseError
Delphi-Quellcode:
{$RANGECHECKS ON}
EinWord := EinInteger; // knallt, wenn nicht im Bereich von 0..65535 EinWord := Word(EinInteger); // harter Cast ohne Prüfung (einfach die höheren 2 Byte wegwerfen) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:55 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