На формі у мене один 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.
Немає коментарів:
Дописати коментар