Autor Beitrag
ardely
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Mi 24.06.09 20:59 
Hallo,
Wie kann ich die entsprechende Nummer vom z.b duMeters erhalten.

mein problem lautet: ich leite in einen string sBase:= 'duMeters' und möchte gern die entsprechende nummer erhalten.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Function GetConvert(sBase:string):double;
var
  TFromA   : TConvType;
  TToB     : TConvType;
begin
   TFromA  := sBase; // das fonctionniert hier nicht!!!
   TToB    := duKilometers;
...
result :=  convert(aValue,TFromA  ,TToB  )
end;


Welche Lösung können sie mir Vorschlagen, vielen Dank im voraus.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 24.06.09 21:22 
Da gibt es nichts Fertiges. Auch via RTTI wird das wohl nicht gehen (auch wenn ich da die Details nicht so gut kenne).

Vorschlag: (// EDIT: ungeeignet)
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
type
  TConvType = (duNone, duKilometers, duMeters);

function StrToConvType(AValue: String): TConvType;
const
  ConvTypeStrings: array[TConvType] of String = ('duNone''duKilometers',
    'duMeters');
var
  i: TConvType;
begin
  Result := duNone;
  for i := Low(TConvType) to High(TConvType) do
    if ConvTypeStrings[i] = AValue then
    begin
      Result := i;
      Break;
    end;
end;


Zuletzt bearbeitet von jaenicke am Mi 24.06.09 22:06, insgesamt 1-mal bearbeitet
ardely Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 66



BeitragVerfasst: Mi 24.06.09 21:56 
Sehr vielen dank für deine schnelle Antwort.

Ich bekomme einen Fehler wie dieses
'E2072 Number of elements (3) differs from declaration (65536)'

muss ich im array[TConvType], 65536 string definieren...
ausblenden Delphi-Quelltext
1:
ConvTypeStrings: array[TConvType] of String = ('duNone''duKilometers''duMeters');					

Danke

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 24.06.09 22:06 
Jetzt habe ich mir das erst genauer angeschaut, es gibt bereits StrToConvUnit und DescriptionToConvType in der Unit ConvUtils, ebenso die umgekehrte Richtung. Ausprobiert habe ich das nicht, aber dem Quelltext nach sollte das das richtige sein.

(Ich kannte TConvType nicht weiter und war daher von einem normalen "kleinen" Typ ausgegangen, aber bei der Vielzahl der Werte und der Definition als normale Zahl geht das so wie ich oben angedacht hatte gar nicht sinnvoll.)