Главная страница
    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.46 MB
Время: 0.027 c
14-1085638234
REA
2004-05-27 10:10
2004.06.13
Хороший тон


14-1085349890
Алекс
2004-05-24 02:04
2004.06.13
помогите с тестовой оболочкой...


1-1085781618
Дмитрий
2004-05-29 02:00
2004.06.13
Таймер


1-1086009645
h010d
2004-05-31 17:20
2004.06.13
Control ы в стиле XP


3-1084862582
Bizquit
2004-05-18 10:43
2004.06.13
Вертикальный ДБ Грид.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский