AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

variablen in variablen

Ein Thema von JP29 · begonnen am 14. Mär 2012 · letzter Beitrag vom 15. Mär 2012
Antwort Antwort
JP29

Registriert seit: 27. Aug 2011
45 Beiträge
 
Delphi 6 Personal
 
#1

variablen in variablen

  Alt 14. Mär 2012, 20:03
hallo,
ich hab da mal ne allgemeine frage zu variablen.
gibt es irgendeine möglichkeit variablen abhängig von anderen variablen bspw. bei records zu machen...
also jetzt konkret der nutzer wählt etwas aus und eine variable bekommt den wert 'audi' und jetzt habe ich ganz viele records wie z.b. audi, mercedes,...
und jetzt soll wenn ein bspw. auto ausgewählt ist der wert automatisch in eine variable eingefügt werden...
also etwa so:

x:='audi';

label1.caption:=x.preis;

also so in der art

wäre echt cool wenn es da was geben würde, würde vieles vereinfachen

danke für eure antworten
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: variablen in variablen

  Alt 14. Mär 2012, 20:13
So einfach funktioniert das nicht. Man könnte baer mit assoziativen Arrays arbeiten oder dafür extended RTTI heranziehen. Performat wird aber keine der Möglichkeiten sein
Markus Kinzler
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: variablen in variablen

  Alt 14. Mär 2012, 20:16
Du kannst an alle Komponenten wie ListBox oder ComboBox usw. Objekte "anhängen". Wählt einer was aus, liest du die Informationen aus dem Objekt aus. Was das ist, hängt an dir.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.014 Beiträge
 
Delphi 12 Athens
 
#4

AW: variablen in variablen

  Alt 14. Mär 2012, 20:53
RTTI alleine wird da nicht viel helfen, denn woher soll die Variable dann den Preis wissen, wenn man ihr nur einen String zuweist?

In einen OleVariant kann man Interfaces reinpacken und dann über dynamische Property darauf zugreifen.
z.B. zu sehen bei beim TWebBrowser, wenn man über DOM auf den HTML-Inhalt zugreift.

Aber im Prinzip wäre hier wohl OOP eher angebracht.
Eine TAuto-Klasse, welche einen Laden-Befehl hat, dem man die Marke sagt und dann kann man über die Property der Klasse auf die Daten des Autos zugreifen.

PS: Der Weg über OleVariant hat einen Nachteil ... die Autovervollständigung des Code-Insight kann nicht helfen, da sie aus der Variable (wärend der Programmierung) natürlich nicht weiß ob und was für ein Objekt mal da drin sein wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: variablen in variablen

  Alt 14. Mär 2012, 21:21
Ich habe das Gefühl, das sich der Threadersteller etwas komplizierter ausgedrückt hat als er es evtl. benötigt. Irgendwie bin ich der Meinung zu erraten was er haben will, aber es soll bitte sein Vorhaben vorher etwas konkretisieren. Vielleicht täusche ich mich.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#6

AW: variablen in variablen

  Alt 15. Mär 2012, 00:03
Man könnte ...mit assoziativen Arrays .. Performant wird aber keine der Möglichkeiten sein
Eine Hashmap ist nicht performant? Das ist mir neu.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: variablen in variablen

  Alt 15. Mär 2012, 08:33
Himitsu hat schon recht. Hier sollte definitiv auf OOP zurückgegriffen werden, wenn nicht sogar auf die netten Interfaces. Das mit den Records wäre hier imho eher fehl am Platz! Hier könnte man auch herrlich mit Spring arbeiten.
Delphi-Quellcode:
IAuto = interface
  // GUID
  function GetPrice(): Integer;
  function GetWeightInKg(): Integer;
  // etc.
end;

TAudi = class(TInterfacedObject, IAuto)
public
  function GetPrice(): Integer;
  function GetWeightInKg(): Integer;
end;

TMercedes = class(TInterfacedObject, IAuto)
public
  function GetPrice(): Integer;
  function GetWeightInKg(): Integer;
end;

// Klassen im DI-Container registrieren
GlobalContainer.RegisterType<TAudi>().Implements<IAuto>('audi');
GlobalContainer.RegisterType<TAudi>().Implements<IAuto>('mercedes');
GlobalContainer.Build();

// So, so viel zur Vorarbeit...

var
  CarName : string;
begin
  CarName := GetCarName();
  Car := ServiceLocator.GetService<IAuto>(CarName);
  edtCarPrice.Text := Car.GetPrice();
  edtCarWeight.Text := Car.GetWeight();
end;

// So, nun ist nur noch die Frage, wie GetCarName aussieht...
fnuction TForm1.GetCarName(): string;
begin
  Result := LowerCase(cmbbxCarSelection.Text);
  
  // -- Oder du musst ein Mapping vornehmen --

  if (cmbbxCarSelection.Text = 'Audi A3') then
    Result := 'audi'
  else if (cmbbxCarSelection.Text = 'Mercedes A-Klasse') then
    Result := 'mercedes'
  // etc...

end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:30 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