Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

можно получить элемент set'а по строке?


alo ©   (2004-11-27 11:43:00) 

другими словами, :

type TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, .....

у меня есть
sFieldType := 'ftFloat'
мне нужно
DataSet.Parameters.ParamByName(sParamName).DataType := _сюда_тип_который_соответствует_sFieldType_


Anatoly Podgoretsky   (2004-11-27 14:50:00) [1]

А ты то тут причем, вопрос то от alo


tchn   (2004-11-27 14:43:00) [2]


> VMcL ©

ок, спасибо


> Piter ©


бывает нужно. в данном случае мне нужно приводить значение variant к типу, ссылка на который хранится в БД в виде строки


VMcL   (2004-11-27 13:48:00) [3]

Можно. Для этого используется Run-time Type Information (RTTI).

Пример.

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, TypInfo;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

type
 TEnum = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency);

procedure TForm1.Button1Click(Sender: TObject);
var
 A: TEnum;
begin
 A := TEnum( GetEnumValue(TypeInfo(TEnum), 'ftSmallint'));
 if A = ftSmallint then
   ShowMessage('OK')
 else
   ShowMessage('Failed!');
end;

end.


Piter   (2004-11-27 12:43:00) [4]

Имхо, никак нельзя, кроме такого:

function StrToFieldType(s: string): TFieldType;
begin
 if s = 'ftFloat' then Result := ftFloat
 else if s = 'ftString' then Result := ftString
 else if ...
 else Result := ftUnknow;
end;


один вопрос - зачем такое нужно? Какая-то неправильная логика в приложении...


Наверх

Титульная страница Поиск, карта сайта Написать письмо