[Delphi] Konwersja nowego typu do String;

0
type
  TOwoce = (Marchew, Jablko, Sliwka);

Jak zrobie tak

var
  Owoc: TOwoce;
        S: String;
begin
S := String(Owoc);
end;

to mi wywala Invaild type cast.
Jak to zrzucić do string, bez pisania tych żmudnych instrukcji:

function OwocToStr(Value: TOwoce): String;
begin
 if Value = Marchew then
   Result := 'Marchew'
  else
    [...[
0

Ze sposobem

type
  TOwoce = (Marchew, Jablko, Sliwka);

Nie ma innego wyjścia, jak if'y.

0
Patryk27 napisał(a)

Ze sposobem

type
  TOwoce = (Marchew, Jablko, Sliwka);

Nie ma innego wyjścia, jak if'y.

Chyba jednak jesteś w błędzie

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TypInfo;

type
  {$M+} //dla RTTI
  TOwoce = (Marchew, Jablko, Sliwka);
  {$M-}

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function OwocToStr(Value: TOwoce): String;
begin
  result:= GetEnumName(TypeInfo(TOwoce), Ord(Value));
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage(OwocToStr(Marchew));
end;

end.
0
GetEnumName

Heh...Zapomniałem o tej procedurze...Zapamiętam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1