AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein case of "anstatt constanten - Variablen einsetzen
Thema durchsuchen
Ansicht
Themen-Optionen

case of "anstatt constanten - Variablen einsetzen

Ein Thema von 1967Schorsch · begonnen am 8. Jul 2020 · letzter Beitrag vom 9. Jul 2020
 
Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.100 Beiträge
 
Delphi XE2 Professional
 
#9

AW: case of "anstatt constanten - Variablen einsetzen

  Alt 9. Jul 2020, 10:22
Hallo und guten Morgen,
vielen dank für die Zahlreichen Antworten.

Ich versuche nochmal mein Problem zu beschreiben.

Für die simulierte Verbrauchberechnung benötige ich unter anderem als Eingangsgrößen die Zahlenreihe wie sie in den Editfeldern der unteren Reihe (33-64) drin stehen. Im angehängten Bild ist die Zahlenreihe leider schon verändert sonst wäre es vlt. deutlicher geworden. So ist der Inhalt von Edit33 Feld eben auch der Inhalt vom ersten Eintrag in der case of Auswahl (Edit34 = 2. Eintrag in case of usw.).
Ich möchte also... wenn sich der Wert im Edit33 Feld ändert sich auch der Wert in der Berechnung mit ändert. Sodas sich dynamisch mit der Veränderung der Eidtfelder 33-64 auch die Werte für die Berechnung mit ändern.
Dazu hatte ich gedacht den Inhalt der Editfelder 33-64 in Variablen zwischenzuspeichern und über die case of Auswahl variabel in meine Berechnung mit einzubinden.

Der OP wollte aber ein "Case" mit Variablen statt Konstanten. Das gibt es nicht, also bleibt nur
if .. then .. exit oder if .. else if
Wie aber schon bemerkt wurde geht das nicht und so suche ich nach einer Alternative.

Die Möglichkeit mit der Funktion inRange finde ich auch interessant komme da als Dummy aber in Delhi 6 nicht weiter.
Ich würde das so machen

Im TForm:
EZValues:Array[33..64] of Integer;

Für alle Edits ein OnChange definieren (Bei allen dasselbe)

Um im OnChange zu prüfen, welches Edit geändert wurde sehe ich 3 Möglichkeiten

1) Über den Namen des Edits

2) Über die Tag-Properties der Edits (bei allen Edits im Tag die Nummer des Edits speichern)

3) Über ein Array of TEdit
Hierfür
In TForm:
Edits:Array of TEdit;

Im FormCreate alle Edits in ein Array stellen.

Delphi-Quellcode:
procedure TForm.FormCreate;
procedure CreateEditsArray(const EB:array of TEdit)
var I:Integer;
begin
   SetLength(Edits,Length(EB));
   For I:=0 to High(EB) do
      Edits[I] := EB[I]
end;
begin
   CreateEditsArray([Edit33, Edit34, …, Edit63])
end;
Im EditChange
Delphi-Quellcode:
TForm.EditChange(Sender : TObject)
var I, ID : Integer;
begin
   // Je nachdem wie du die Edits identifizierst
   ID:= // aus TEdit(Sender).Name ableiten
   Oder ID := TEdit(Sender).Tag;
   Oder
   For I := 0 to High(Edits) do
      If Edits[I] = Sender then begin
         ID := I + 33; // +33, weil in Edits[0] das Edit33 steht
         Break;
      end;
   EZValues[ID] := StrToInt(TEdit(Sender).Text);
   // Jetzt kannst du die aktuellen Werte der Edits aus EZValues[x] holen
end;
Hab das nur auf die Schnelle so hingetippt - nicht getestet.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat
 


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 18: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