суботу, 10 квітня 2010 р.

Enum to String, String To Enum Delphi

В цьому пості представлений код для перетворення значення з Enum to String і навпаки - переведення String в елемент з Enum в Delphi.

На формі у мене один Edit і дві кнопки - Button1 i Button2.
Для перетворення string в тип Enum я використовую функцію GetEnumValue задеклароване в юніті TypInfo, а для перетворення типу Enum в string - функцію GetEnumName задекларовану в тому самому юніті.

Код з коментарями:

unit convert;

interface

{Для того щоб зробити перетворення потрібно в uses включити TypInfo}

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

{Описання enumeration}

type
  TCharacter=(utf8,ascii,cp1251,cp1250);

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
{Опис функції для перетворення з Enum to String, вхідний параметр типу TСharacter, результат - string}
    function ToString (character: TСharacter):string;
{Опис функції для перетворення з String To Enum, вхідний параметр типу string, результат - TСharacter}
    function ToEnum (tocharacter: string):TCharacter;
  public
    { Public declarations }

  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{Реалізація функції ToString}

function TForm1.ToString (character: TCharacter):string;
begin
  result:=GetEnumName(TypeInfo(TCharacter),integer(character));
end;

{Реалізація функції ToEnum}

function TForm1.ToEnum (tocharacter: string):TCharacter;
var
  i:integer;
begin
//перевіряємо чи введеное значення входить в Enum
  if GetEnumValue(TypeInfo(TCharacter),tocharacter)>=0 then
//якщо так, то в результат записуємо вже перетворене значення
  result:= TCharacter(GetEnumValue(TypeInfo(TCharacter),tocharacter))
  else
//в іншому випадку просимо ввести коректне значення
    Showmessage ('Input right character name');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
// виклик функції і присвоєння значення
  Edit1.Text:=ToString(utf8);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  charac:TCharacter;
begin
// виклик функції і присвоєння значення
 charac:=ToEnum(Edit1.Text);
end;

end.

Немає коментарів:

Дописати коментар