Конференция "Начинающим" » Варианты оперирования полями [D7]
 
  • Laguna © (15.11.11 22:39) [0]
    Подскажите , почему два варианта не одинаково работают? Если выполняю так, все нормально.

    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 ...


    В чем ошибка ?
  • Jeer © (15.11.11 22:42) [1]
    Ты продолжай, рассказывай..
    Иногда в процессе вопросов, задаваемых в зенит, находится самостоятельно ответ.
  • Германн © (16.11.11 00:03) [2]

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

    У TField  нет метода SaveToFile. Он есть только у некоторых его наследников.
  • Laguna © (16.11.11 00:29) [3]

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

    Я это у же понял. А как мне сделать правильно, чтобы получить задуманное?
  • Laguna © (16.11.11 00:46) [4]
    Кажется я понял. Нужно просто приведение выполнить:

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

  • Германн © (16.11.11 00:51) [5]

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

    А проверку на тип поля будет Пушкин делать? Или Гоголь? :)
  • Laguna © (16.11.11 09:59) [6]
    Наверное в качестве хорошего тона это нужно делать, но в данном случае я оперирую с конкретным типом.
  • Anatoly Podgoretsky © (16.11.11 10:31) [7]

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

    У тебя еще все впереди.
  • RWolf © (16.11.11 11:14) [8]

    > [4]

    это пишется по-другому:
    (BalansQuery.FieldByName(Field_A[i]) as TBlobField).SaveToFile(TempDir + 'vid2.bmp');


    по крайней мере, будет внятная диагностика вместо AV, когда подвернётся поле не того типа.
  • Laguna © (16.11.11 12:42) [9]

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

    Спасибо, взял на заметку.
 
Конференция "Начинающим" » Варианты оперирования полями [D7]
Есть новые Нет новых   [134431   +13][b:0][p:0.001]