Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.022 c
14-1085660205
Mad Dancer
2004-05-27 16:16
2004.06.13
По поводу Ace of Base


14-1085407404
dimm22
2004-05-24 18:03
2004.06.13
Нужна ваша помощь ! Помогите убедить колегу.


1-1086101433
Ruslan
2004-06-01 18:50
2004.06.13
Как написать функцию?


1-1086152549
sils
2004-06-02 09:02
2004.06.13
Траблы с QuickReport


3-1084972116
ka
2004-05-19 17:08
2004.06.13
Доступ к записям таблицы.