AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamischen Wert ermitteln

Ein Thema von Jerry · begonnen am 21. Jan 2014 · letzter Beitrag vom 21. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2      
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#1

Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 14:48
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 14:51
Ich verstehe Deinen Code nicht ganz, zumal adresse ja immer wieder überschrieben wird. Wäre Delphi-Referenz durchsuchenFindComponent nicht zielführender?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 14:54
Ich sehe an dem Code nicht warum es zu diesem Fehler kommen könnte.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 14:56
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!
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 15:00
Ich würde noch ein Break reinmachen, wenn du einen Treffer hattest, dann sparst dir den Rest der Schleife.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 15:01
Durch Dein With versuchst Du faktisch folgenden Zugriff
(Components[i] as TEdit).(Components[i] as Tedit).Text greifst also auf Components von (Components[i] as TEdit) zu ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 15:03
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 15:04
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.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.015 Beiträge
 
Delphi 12 Athens
 
#9

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 15:06
Durch Dein With versuchst Du faktisch folgenden Zugriff
(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 with
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Jerry

Registriert seit: 24. Feb 2005
Ort: Schweiz/Thurgau
138 Beiträge
 
Delphi 2010 Professional
 
#10

AW: Dynamischen Wert ermitteln

  Alt 21. Jan 2014, 15:07
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...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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