Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Typ Werte Als String? (https://www.delphipraxis.net/35984-typ-werte-als-string.html)

Kedariodakon 14. Dez 2004 13:57


Typ Werte Als String?
 
Wenn ich ein Typen habe z.B.:
Delphi-Quellcode:
Type   TAuto = ( aBMW, aOPEL, aAUDI, aFORD, aNISSAN {...} );
nu will ich gern den TAuto-Typ-Wert als String haben!
z.B. wenn TAuto = aBMW möchte ich aBMW als String zurückhaben...
Geht das irgendwie ohne eine lange Case-Funktion zu benutzen oder ein StringArray vom Typ TAuto oder sonst was wozu ich alle TAuto-Werte nochmal auflisten muß?
Ganz einfach als Funktion vielleicht? :gruebel:

Bye

ibp 14. Dez 2004 14:01

Re: Typ Werte Als String?
 
imho nein

jfheins 14. Dez 2004 14:01

Re: Typ Werte Als String?
 
+Mit der Ausgabe von eigenen Typen siehts schlecht aus.
Du machst am besten eine Funktion, die dir das ganze "übersetzt".
Delphi-Quellcode:
function AutoToStr (Auto: TAuto): String;

dizzy 14. Dez 2004 14:01

Re: Typ Werte Als String?
 
Gibt's imho nicht. Am besten schreibt man sich für sowas dann eine kleine Funktion der Art:
Delphi-Quellcode:
function TAutoToStr(v: TAuto): String;
begin
  case v of
    aBMW: result := 'aBMW';
    aOPEL: ... ...
  end;
end;
\\edit: Ui! Später, aber ausführlicher :mrgreen:

Gollum 14. Dez 2004 14:05

Re: Typ Werte Als String?
 
Hallo,

oder Du nimmst ein Array of String in der Form:
Delphi-Quellcode:
 
const
  TAutoStr:array[TAuto] of String=
    ('aBMW', 'aOPEL', 'aAUDI', 'aFORD', 'aNISSAN', {...} );

Sprint 14. Dez 2004 14:23

Re: Typ Werte Als String?
 
Zitat:

Zitat von Kedariodakon
nu will ich gern den TAuto-Typ-Wert als String haben!
z.B. wenn TAuto = aBMW möchte ich aBMW als String zurückhaben...
Geht das irgendwie ohne eine lange Case-Funktion zu benutzen

Also indirekt über einen kleinen Umweg geht es. Stichwort: RTTI

Delphi-Quellcode:
...

uses TypInfo;

...

type
  TAuto = (Opel, BMW, VW, Audi, Nissan);
  TAutos = Set of TAuto;

...

function FabrikatToStr(Autos: TAutos): String;
var
  I: TAuto;
begin
  Result := '';
  for I := Low(TAuto) to High(TAuto) do
  begin
    if I in Autos then
    begin
      if Result <> '' then
        Result := Result + ', ';
      Result := Result + GetEnumName(TypeInfo(TAuto), Ord(I));
    end;
  end;
end;

...

procedure TForm1.Button1Click(Sender: TObject);
var
  Auto: TAutos;
begin
  Auto := [Nissan];
  ShowMessage(FabrikatToStr(Auto));
end;

...

Kedariodakon 14. Dez 2004 14:23

Re: Typ Werte Als String?
 
habe das in der Arrayform wie Gollum meinte, aber bei vielen Werten wird das schnell unübersichtlich und gerade wenn man dann mal mittendrin was ändern will...

Da wär eine Case schon schöner, aber da muß man ja am Anfang soviel :coder: :zwinker:

OK danke erstmal...


Edit: @Sprint :thumb: danke genausowas suchte ich :P

Edit: Geht :thumb:

bye

jim_raynor 14. Dez 2004 15:09

Re: Typ Werte Als String?
 
Kennt denn keiner die RTTI (Run Time Typ Information).

Einfach Unit TypInfo einbinden (hoffe die gibts in allen Delphi Versionen).

Delphi-Quellcode:
str:=GetEnumName(TypeInfo(TAuto),Ord(Value));
[edit]Oh Sprint kennt die ja doch :roll: [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 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