На формі у мене один 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.




Немає коментарів:
Дописати коментар