Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Dynamischen Wert ermitteln (https://www.delphipraxis.net/178689-dynamischen-wert-ermitteln.html)

Jerry 21. Jan 2014 14:48

Dynamischen Wert ermitteln
 
Hallo zusammen

Ich habe 8 Edit Felder. Name: edt_SCS1IPAdresse und edt_SCS2IPAdresse usw. Die Zahl 1-8 ist im Namen enthalten.

Wie kann ich nun den Wert dieser Felder in eine Variable (Adresse) setzen mit diesem Code:

Delphi-Quellcode:
      if cb_RDCServer.Text <> '' then // hier steht dann z.B: 8 darin
      begin
        for i := 0 to ComponentCount - 1 do
        begin
          if (Components[i] is TEdit) and (Components[i].Name = 'edt_SCS' + cb_RDCServer.Text + 'IPAdresse' ) then
          begin
            with (Components[i] as TEdit) do
            begin
              adresse := (Components[i] as Tedit).Text;
            end;
          end;
        end;
Ich erhalte bei der letzten Zeile immer folgenden Fehler:

Listenindex überschreitet das Maximum (1691).

Ich nehme an, dass ich bei meinem Code einen Überlegungsfehler befindet.

Danke für Eure Hilfe. :-)

Gruss Joki.

DeddyH 21. Jan 2014 14:51

AW: Dynamischen Wert ermitteln
 
Ich verstehe Deinen Code nicht ganz, zumal adresse ja immer wieder überschrieben wird. Wäre Delphi-Referenz durchsuchenFindComponent nicht zielführender?

baumina 21. Jan 2014 14:54

AW: Dynamischen Wert ermitteln
 
Ich sehe an dem Code nicht warum es zu diesem Fehler kommen könnte.

Jerry 21. Jan 2014 14:56

AW: Dynamischen Wert ermitteln
 
Danke für Deine schnelle Antwort.

Adresse soll genau 1 mal den entsprechenden Wert des gewählten edit-Feldes bekommen.
Ich gehe davon aus, dass die obige Abprüfung ja nur gerade einmal passt, und somit sollte meine Variable Adresse den richtigen Wert bekommen.

Mit diesem Componets[i] Codes kenne ich mich nicht so gut aus...

Danke!

baumina 21. Jan 2014 15:00

AW: Dynamischen Wert ermitteln
 
Ich würde noch ein Break reinmachen, wenn du einen Treffer hattest, dann sparst dir den Rest der Schleife.

Bummi 21. Jan 2014 15:01

AW: Dynamischen Wert ermitteln
 
Durch Dein With versuchst Du faktisch folgenden Zugriff
Delphi-Quellcode:
(Components[i] as TEdit).(Components[i] as Tedit).Text
greifst also auf Components von (Components[i] as TEdit) zu ....

DeddyH 21. Jan 2014 15:03

AW: Dynamischen Wert ermitteln
 
Delphi-Quellcode:
const
  EDITNAME = 'edt_SCS%sIPAdresse';
var
  AComponent: TComponent;
...
  if cb_RDCServer.Text <> '' then // hier steht dann z.B: 8 darin
      begin
        AComponent := FindComponent(Format(EDITNAME, [cb_RDCServer.Text]));
        if Assigned(AComponent) then
          if AComponent is TEdit then
            adresse := TEdit(AComponent).Text;
      end;

baumina 21. Jan 2014 15:04

AW: Dynamischen Wert ermitteln
 
Richtig Bummi, dieses with ist doch immer wieder gemein, ich weiß warum ich das nie benutze.

@DeddyH : Ein FindComponent schleift auch über ComponentCount, das ist grad egal.

Uwe Raabe 21. Jan 2014 15:06

AW: Dynamischen Wert ermitteln
 
Zitat:

Zitat von Bummi (Beitrag 1244744)
Durch Dein With versuchst Du faktisch folgenden Zugriff
Delphi-Quellcode:
(Components[i] as TEdit).(Components[i] as Tedit).Text
greifst also auf Components von (Components[i] as TEdit) zu ....

Sehr schönes Beispiel für die Bösartigkeit von
Delphi-Quellcode:
with
:thumb:

Jerry 21. Jan 2014 15:07

AW: Dynamischen Wert ermitteln
 
mmm dann soll also der ganze "with ... do" Code weg?

Und direkt adresse := (Components[i] as Tedit).Text;
geschrieben werden?

Wenn ja erscheint der selbe Fehler... :-(


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:18 Uhr.
Seite 1 von 2  1 2      

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