Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dynamische Bezeichner / variable Variablen (https://www.delphipraxis.net/24256-dynamische-bezeichner-variable-variablen.html)

jfheins 18. Jun 2004 13:56


Dynamische Bezeichner / variable Variablen
 
Wie bekomme ich dynamische Bezeichner??

(lässt sich sauschlecht erklären, darum ein beispiel ...)

Delphi-Quellcode:
var
 gesnote: double;

for zaehler := 1 to strtoint (Anzahl_Box.Text) do Anweisung
begin
gesnote := gesnote + strtoint(Edit1.Text);
end;
So weit, so gut. Jetzt möchte ich aber nicht Edit1.Text haben, sondern Edit[zaeler].Text
Also beim ersten Durchlauf dann Edit1.Text, beim 2. Edit2.Text usw.

mirage228 18. Jun 2004 13:58

Re: Dynamische Bezeichner / variable Variablen
 
Hi,

wenn es um Komponenten wie die Edits geht, solltest du dir mal Hier im Forum suchenFINDCOMPONENT anschauen.

mfG
mirage228

Steve 18. Jun 2004 13:59

Re: Dynamische Bezeichner / variable Variablen
 
Nimm doch einfach ein ARRAY OF TEdit.. Is in meinen Augen einfach als das FindComponent-Zeugs ;)

Stephan

Stanlay Hanks 18. Jun 2004 14:18

Re: Dynamische Bezeichner / variable Variablen
 
Wieso das denn? Find Komponent ist doch recht "angenehm" ;)

Delphi-Quellcode:
gesnote := gesnote + StrToInt((FindComponent('Edit'+IntToStr(i)) as TEdit).Text);
Müsste eigentlich gehen.

Man liest sich, Stanlay :hi:

negaH 18. Jun 2004 14:30

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

jfheins 18. Jun 2004 21:20

Re: Dynamische Bezeichner / variable Variablen
 
siehe auch Hier

SirThornberry 18. Jun 2004 21:53

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