![]() |
Dynamische Bezeichner / variable Variablen
Wie bekomme ich dynamische Bezeichner??
(lässt sich sauschlecht erklären, darum ein beispiel ...)
Delphi-Quellcode:
So weit, so gut. Jetzt möchte ich aber nicht Edit1.Text haben, sondern Edit[zaeler].Text
var
gesnote: double; for zaehler := 1 to strtoint (Anzahl_Box.Text) do Anweisung begin gesnote := gesnote + strtoint(Edit1.Text); end; Also beim ersten Durchlauf dann Edit1.Text, beim 2. Edit2.Text usw. |
Re: Dynamische Bezeichner / variable Variablen
Hi,
wenn es um Komponenten wie die Edits geht, solltest du dir mal ![]() mfG mirage228 |
Re: Dynamische Bezeichner / variable Variablen
Nimm doch einfach ein ARRAY OF TEdit.. Is in meinen Augen einfach als das FindComponent-Zeugs ;)
Stephan |
Re: Dynamische Bezeichner / variable Variablen
Wieso das denn? Find Komponent ist doch recht "angenehm" ;)
Delphi-Quellcode:
Müsste eigentlich gehen.
gesnote := gesnote + StrToInt((FindComponent('Edit'+IntToStr(i)) as TEdit).Text);
Man liest sich, Stanlay :hi: |
Re: Dynamische Bezeichner / variable Variablen
FindComponent() ist bei häufiger, gleicher Anwendung nicht nur unübersichtlicher und anfälliger sondern bei vielen Komponenten auf dem Form auch noch viel ineffizienter und langsammer.
Im private deines Forms definierst du ein array[] of TEdit, dieses wird per .FindKomponent() im .FormCreate() einmalig initialisert, und alle anderen Funktionen nutzen dann dieses Array[]. Das macht den Code sicherer (keine ständigen TypCast's ), schneller und übersichtlicher. Grundsätzlich gilt: Variablen sind dazu da das man auch Variablen benutzt, sie vereinfachen den Source. Gruß Hagen |
Re: Dynamische Bezeichner / variable Variablen
siehe auch
![]() |
Re: Dynamische Bezeichner / variable Variablen
Sollte dann ungefähr so aussehen (bei 4 Edits)
Delphi-Quellcode:
[...]
private fEdits: Array[1..4] of TEdit; [...] procedure TForm1.FormCreate(Sender: TObject); var LCount: Integer; begin for LCount := 1 to 4 do begin fEdits[LCount] := TEdit(FindComponent('Edit' + Inttostr(LCount))); end; end; [...] var LCount: Integer; begin for LCount := 1 to 4 do begin fEdits[LCount].Text := 'Testtext'; //allen Edits den selben Text zuweisen end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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