Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Variablenverkettung: Wert einer Variable auslesen, die einem Pointer entspricht (https://www.delphipraxis.net/213849-variablenverkettung-wert-einer-variable-auslesen-die-einem-pointer-entspricht.html)

Stewag 6. Okt 2023 17:12

Variablenverkettung: Wert einer Variable auslesen, die einem Pointer entspricht
 
Ich habe drei Variablenlisten: Nennen wir sie der Einfachheit halber "Auto", "Motor" und "Leistung".

Ich möchte die Leistung des Motors eines Autos bestimmen.

'MotorN' ist dabei zum einen String, der einem Auto zugewiesen wird und gleichzeitig eine gleichnamige Variable, der eine Leistung zugewiesen ist.

Gesetzt wurde:
Auto1 := 'Motor1' // 'Motor1' = String
Motor1 := Leistung1 // Motor1 = Variable
Leistung1 := '99' bzw. 99 // String oder Integerwert

Mit Pchar(Auto1) kann ich den Motor auslesen.

Meine Frage ist: Wie kann ich über den Motor die Leistung auslesen?
Mit Pchar(Pchar(Auto1)) geht es nicht.

Oder lässt sich das Problem einfacher abbilden?

himitsu 6. Okt 2023 17:20

AW: Variablenverkettung: Wert einer Variable auslesen, die einem Pointer entspricht
 
Also, da Delphi sowieso garnicht den Name der Variable in der RTTI speichert, ist die ganze Sache eh irrelevant.
(ja, nicht als Variablen, sondern als Feld in ein Klasse ... aber neee)

Delphi-Quellcode:
Autos: TStringList; // oder oder ein String-Array oder sonstwas
Motoren: TDictionary<string,string>;
Leistung: TDictionary<string,Integer>;
Autos = [Auto1, Auto2]
Motoren = [Auto1:Motor1, Auto2:Motor2]
Leistung = [Motor1:99, Motor2:150]

Oder warum nicht gleich eine Liste, Dictionary oder Array mit einem Record, welcher 3 Felder besitzt. :stupid:

Delphi-Quellcode:
type
  TAuto = record // oder als "class"
    Auto: string;
    Motor: string;
    Leistung: Integer;
  end;
Delphi-Quellcode:
TList<TAuto> // TObjectList<TAuto> wenn als CLASS
TArray<TAuto>
TDictionary<string,TAuto> // also name des Autos, mit dessen Eigenschaften

Stewag 6. Okt 2023 22:43

AW: Variablenverkettung: Wert einer Variable auslesen, die einem Pointer entspricht
 
Zitat:

da Delphi sowieso garnicht den Name der Variable in der RTTI speichert, ist die ganze Sache eh irrelevant.
Danke Himitsu, das hatte ich mir nicht klargemacht

Ich habe mich jetzt für eine einfache Funktion zur Abfrage der "Leistung" entschieden:
Code:
Leistung := GetLeistung(Pchar(Auto1))


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 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 by Thomas Breitkreuz