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

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

Варианты оперирования полями [D7]


Laguna ©   (2011-11-15 22:39:00) 

Подскажите , почему два варианта не одинаково работают? Если выполняю так, все нормально.

DM1.BalansQueryDomFoto2.SaveToFile(TempDir + 'vid2.bmp');

Чтобы объеденить десять одинаковых операций в один блок, выполняю следующую замену:

for i := 1 to 10 do
DM1.BalansQuery.FieldByName(Field_A[i]).SaveToFile(TempDir + 'vid2.bmp');

Во втором варианте ошибка, мол SaveToFile - неизвестно что такое. Field_A[]- строковый массив названий полей.
Аналогичная ситуация

1) if BalansQuery.FieldByName(Field_A[i]).BlobSize <> 0 then ...
пришлось заменить на
2) if not BalansQuery.FieldByName(Field_A[Tag]).IsNull then ...

В чем ошибка ?


Laguna   (2011-11-16 12:42:00) [1]


> RWolf ©   (16.11.11 11:14) [8]

Спасибо, взял на заметку.


RWolf   (2011-11-16 11:14:00) [2]


> [4]

это пишется по-другому:
(BalansQuery.FieldByName(Field_A[i]) as TBlobField).SaveToFile(TempDir + 'vid2.bmp');
по крайней мере, будет внятная диагностика вместо AV, когда подвернётся поле не того типа.


Anatoly Podgoretsky   (2011-11-16 10:31:00) [3]


> Наверное в качестве хорошего тона это нужно делать, но в
> данном случае я оперирую с конкретным типом.

У тебя еще все впереди.


Laguna   (2011-11-16 09:59:00) [4]

Наверное в качестве хорошего тона это нужно делать, но в данном случае я оперирую с конкретным типом.


Германн   (2011-11-16 00:51:00) [5]


> Laguna ©   (16.11.11 00:46) [4]
>
> Кажется я понял. Нужно просто приведение выполнить:

А проверку на тип поля будет Пушкин делать? Или Гоголь? :)


Laguna   (2011-11-16 00:46:00) [6]

Кажется я понял. Нужно просто приведение выполнить:

TBlobField(BalansQuery.FieldByName(Field_A[i])).SaveToFile(TempDir + 'vid2.bmp');


Laguna   (2011-11-16 00:29:00) [7]


> У TField  нет метода SaveToFile. Он есть только у некоторых
> его наследников.

Я это у же понял. А как мне сделать правильно, чтобы получить задуманное?


Германн   (2011-11-16 00:03:00) [8]


> Во втором варианте ошибка, мол SaveToFile - неизвестно что
> такое.

У TField  нет метода SaveToFile. Он есть только у некоторых его наследников.


Jeer   (2011-11-15 22:42:00) [9]

Ты продолжай, рассказывай..
Иногда в процессе вопросов, задаваемых в зенит, находится самостоятельно ответ.


Наверх

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