AGB  ·  Datenschutz  ·  Impressum  







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

Propertys auf Klasse variabel ansprechen

Ein Thema von Eppos · begonnen am 19. Jul 2016 · letzter Beitrag vom 19. Jul 2016
Antwort Antwort
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#1

Propertys auf Klasse variabel ansprechen

  Alt 19. Jul 2016, 11:19
Hallo zusammen,

ich habe eine Klasse mit Tabellennamen, diese möchte ich gerne variabel Abfragen.

Beispiel:
Delphi-Quellcode:
fTabelle1 : String;
fTabelle2 : String;

Property A1 : String read fTabelle1 write fTabelle1;
Property A2 : String read fTabelle2 write fTabelle2;
Im Programm selbst, habe ich einen String der so heißt wie die Property "A1".
Kann ich mit einem String die Property Abfragen und den Wert auslesen?

Gruß
Eppos

Geändert von TBx (19. Jul 2016 um 12:50 Uhr) Grund: Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.623 Beiträge
 
Delphi 12 Athens
 
#2

AW: Propertys auf Klasse variabel ansprechen

  Alt 19. Jul 2016, 11:55
Per RTTI geht das. Schau Dir mal die Unit System.Rtti dazu an.

[edit] Hier ein Minimalbeispiel ohne große Fehlerbehandlung:
Delphi-Quellcode:
uses System.Rtti;

function GetPropString(const Instance: TObject; const Propname: string): string;
var
  ctx: TRttiContext;
  rt: TRttiType;
  Prop: TRttiProperty;
  Value: TValue;
begin
  Result := '';
  ctx := TRttiContext.Create;
  rt := ctx.GetType(Instance.ClassType);
  if Assigned(rt) then
    begin
      Prop := rt.GetProperty(Propname);
      if Assigned(Prop) then
        begin
          Value := Prop.GetValue(Instance);
          Result := Value.ToString;
        end;
    end;
end;
[/edit]
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

Geändert von DeddyH (19. Jul 2016 um 12:53 Uhr)
  Mit Zitat antworten Zitat
Eppos

Registriert seit: 7. Aug 2006
Ort: Heilbronn
523 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Propertys auf Klasse variabel ansprechen

  Alt 19. Jul 2016, 13:14
Perfekt, vielen Dank!
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Propertys auf Klasse variabel ansprechen

  Alt 19. Jul 2016, 13:19
Perfekt? Sorry, aber ich halte so etwas für Murks. Man sollte so was nur im Notfall einsetzen
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Propertys auf Klasse variabel ansprechen

  Alt 19. Jul 2016, 13:26
Perfekt? Sorry, aber ich halte so etwas für Murks. Man sollte so was nur im Notfall einsetzen
Gibt es dafür auch einen Grund?
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.443 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Propertys auf Klasse variabel ansprechen

  Alt 19. Jul 2016, 14:02
Nein, nicht einen sondern viele.
Im Kern geht es darum, dass man die Fehlersicherkeit eines typsicheren Compilers aufgibt.
Wenn jemand das A2 mal umbennent, oder statt einem String einen FooString nimmt, dann bemerkt das vorher der Compiler. Mit Rtti knallt es im besten Fall zur Laufzeit, im schlimmsten Fall gibt es merkwürdige Effekte.
Auch wird das KISS-Prinzip verletzt.

Warum nimmste nicht ein array property?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Propertys auf Klasse variabel ansprechen

  Alt 19. Jul 2016, 15:42

Delphi-Quellcode:
fTabelle : Array[1..3] of String;

Property A1 : String index 1 read GetTabelle write SetTabelle;
Property A2 : String index 2 read GetTabelle write SetTabelle;
Property A3 : String index 3 read GetTabelle write SetTabelle;
Property A[Index: Integer] : String read GetTabelle write SetTabelle;
Die Signaturen der Getter und Setter sind hier identisch, also kann man Beides oder nur je eine Variante verwenden.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (19. Jul 2016 um 15:45 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:33 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