Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизКак вывести название типа? Найти похожие ветки
← →
DmitryNekl (2004-06-01 11:03) [0]Смешной такой вопрос. У типа TField есть свойство DataType, которое представляет собой перечисление (ftUnknown, ftString и т.д.)
Вопрос: как вывести название типа без кучи конструкций типа
if (ADOQuery.Fields.Fields[i].DataType = ftString) then ShowMessage("ftString");
и без сase?
← →
Anatoly Podgoretsky © (2004-06-01 11:14) [1]Создай константный массив сток, где размерность тип
← →
Sandman25 © (2004-06-01 11:18) [2]uses db, typinfo;
procedure TForm1.Button1Click(Sender: TObject);
var
f: TFieldType;
begin
f := ftString;
ShowMessage(GetEnumName(TypeInfo(TFieldType), Ord(f)));
end;
← →
DmitryNekl (2004-06-01 11:26) [3]Как вариант это подходит. Но чисто теоретически: нет ли такой "встроенной" конструкции языка, которая возвращает нужное значение?
И еще вопрос: на основании информации о datatype принимается решение о создании переменной:
case ...
ftString: T:=TStringField.Create(Self);
ftInteger: T:=TIntegerField.Create(Self);
...
Длинный список
...
end;
Может, есть какой-нибудь элегантный способ отказаться от этой длинной конструкции и заменить ее чем-то более коротким и изящным?
← →
DmitryNekl (2004-06-01 11:30) [4]2 Sandman25:
Спасибо! Пошел разбираться :)
← →
default © (2004-06-01 11:34) [5]есть...нужно создать массив соотв-ия знач-ий переч-ого типа с ссылками на соотв-ие классы и всё...
← →
default © (2004-06-01 11:35) [6]есть...нужно создать массив соотв-ия знач-ий переч-ого типа с ссылками на соотв-ие классы и всё...
← →
Sandman25 © (2004-06-01 11:38) [7][3] DmitryNekl (01.06.04 11:26)
type
TFieldClass = class of TField;
var
FieldArr: array[TFieldType] of TFieldClass;
begin
...
T := FieldArr[MyFieldType].Create(Self);
...
initialization
FieldArr[ftString] := TStringField;
...
← →
jack128 © (2004-06-01 15:50) [8]
> type
> TFieldClass = class of TField;
> var
> FieldArr: array[TFieldType] of TFieldClass;
кстати говоря такой список уже существует - cм. db.DefaultFieldClasses
← →
jack128 © (2004-06-01 15:50) [9]
> кстати говоря такой список
не список, а массив, разумеется..
← →
Sandman25 © (2004-06-01 16:10) [10][8] jack128 © (01.06.04 15:50)
Логично. Свой массив нужен только при необходимости изменить классы по умолчанию.
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.033 c