Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.13;
Скачать: [xml.tar.bz2];

Вниз

Как вывести название типа?   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.033 c
1-1086087100
IgorR
2004-06-01 14:51
2004.06.13
Присвоение значения по ссылке


1-1086094071
LittleGirly
2004-06-01 16:47
2004.06.13
Создание диаграммы в Excel-e


8-1080846684
?
2004-04-01 23:11
2004.06.13
как отловить изменения экрана?


1-1085809932
Eugene
2004-05-29 09:52
2004.06.13
Максимальное раскрытие и восстановление окна


14-1085545258
Романов Р.В.
2004-05-26 08:20
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский