Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.018 c
14-1085451868
gn
2004-05-25 06:24
2004.06.13
M$ Word


6-1082553857
Multy
2004-04-21 17:24
2004.06.13
Подсчёт трафика


14-1085578747
Igorek
2004-05-26 17:39
2004.06.13
Загадка - дракон в кристалле


14-1085311405
VMcL
2004-05-23 15:23
2004.06.13
Голосование "Образование программиста?"


1-1086007539
zergush
2004-05-31 16:45
2004.06.13
Разноцветные строки в ListBox




   Наверх