AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Variable über zusammengesetzte Strings ansprechen
Thema durchsuchen
Ansicht
Themen-Optionen

Variable über zusammengesetzte Strings ansprechen

Ein Thema von hirnstroem · begonnen am 22. Mai 2007 · letzter Beitrag vom 22. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 12:08
'loha Folks,

in einem Projekt befindet sich ein Unit in welchem ein Paar Konstanten definiert werden:

Delphi-Quellcode:
const
  HWV_DI = 'DI';
  HWV_GPI = 'GPI';
Gibt es eine möglichkeit diese nun ähnlich wie mit der FindComponent Routine zu suchen? Es ist nämlich so, dass der "Stamm" der Konstanten stets gleichbleibt und lediglich das Ende unterschiedlich ist. Desweiteren werden künftig immer mehr Konstanten mit demselben "Stamm" dazukommen und genau diese möchte ich "dynamisch" ansprechen können, wenn das geht, irgendwie -.-

Grüsse
hirnstroem
inde deus abest
  Mit Zitat antworten Zitat
Benutzerbild von mischerr
mischerr

Registriert seit: 6. Feb 2004
Ort: Konz
238 Beiträge
 
Delphi 10.3 Rio
 
#2

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 12:26
Ist mir nicht bekannt und kann mir auch nicht vorstellen dass das so funktioniert.

Ich würde mir ein konstantes Array definieren und dieses dann durchsuchen. Oder eine Client-Datenmenge, oder eine Klasse erstellen, ähnlich wie..

Delphi-Quellcode:
TMyClass = class
  VarName : string;
  VarValue: integer;
end;
..dann eine TList und dort die ganzen Typen im initialization-Abschnitt der unit registrieren. Dann noch eine Funktion, die den gesuchten Typ aus der jeweils gewählten Datenmenge liefert, ähnlich wie..

function GetConst(const AName: string): string; ..und fertig. Der Ordnung halber bei Verwendung der Klasse+TList aber nicht vergessen, die Liste im finialization Abschnitt wieder zu freen. Aber viele Wege führen nach Rom...
  Mit Zitat antworten Zitat
Benutzerbild von Codewalker
Codewalker

Registriert seit: 18. Nov 2005
Ort: Ratingen
945 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 12:27
Wäre aber eine nette Funktion die man sich in Delphi durchaus wünschen würde, Variablen und Konstanten per String-Namen anzusprechen. Kann man das nicht irgendwo vorschlagen? Oder vielleicht liest das ja jemand mit nem guten Draht zu CodeGear
  Mit Zitat antworten Zitat
fLaSh11
(Gast)

n/a Beiträge
 
#4

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 12:33
Mach doch einfach ne Liste aus den Konstanten.
Code:
const1=asdf;
const2=fdsa;
...
und dann such die Konstante in der Liste und hol den Wert raus.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 13:29
Was haltet ihr von einer Stringlist (als Speicherung für die Variablen). Wenn man da mit Names und Values arbeitet, ist ein Zugriff über Strings möglich.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 13:38
Das vorhaben ist nicht möglich da Variablennamen und Constantennamen in der kompilierten Exe/Dll etc. nicht mehr vorhanden sind.
Die gewünschte parallele zu FindComponent hingt auch. Denn FindComponent sucht nicht eine Variable mit einem bestimmtem Namen sondern geht alle Komponenten durch und vergleicht das Property "Name". Und zufällig ist dieses Property immer gleich mit dem Variablennamen aber eben auch nur so lange wie man die Komponenten per IDE auf das Form setzt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 13:41
Stimmt, als echte Variablen geht es nicht, wie man auch sehr schön im Assemblercode sieht, wo dann nur noch Adressen auftauchen. Dennoch kann man das Verhalten von Findcomponent nachbilden, und da die Stinglist es unterstützt muss man nix mehr selber machen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 13:45
genau, das Verhalten von FindComponent kann man recht einfach nachbilden. Es muss eben einem nur bewusst sein das Variablennamen im compilat nicht mehr existent sind und man somit alle Namen als Daten hinterlegen muss (z.B.: in einer Stringlist)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#9

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 13:53
Delphi-Quellcode:
TNamen = (Hans,Peter, Uwe, Otto);
Const AdresseVon : array[TNamen] of String = ('Wilhelmstrasse', 'Otterweg', 'Pupsweg', 'Blödweg');
Const Namen: array[TNamen] of String = ('Hans','Peter','Uwe','Otto');

Function FindConst(aString:tString):tname;
var i:integer;
    gefunden:boolean;
begin
  gefunden := false
  For i := integer(Hans) to integer(otto) do
  Begin
    if namen[tnamen(i)] = astring then
    Begin
      gefunden := true;
      result := tnamen(i);
      break;
    end;
  end;
  if not gefunden then
    Raise Exception.create('Dumme sache');
end;

Sowas ungefähr könnte gehen
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Variable über zusammengesetzte Strings ansprechen

  Alt 22. Mai 2007, 13:56
Damit gewinnt man nichts, da man die Namen nicht wie gewünscht zusammensetzen kann.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  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 10:10 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