powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сравнить 2 Variant (Field.OldValue и FIeld.Value)
7 сообщений из 7, страница 1 из 1
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
    #39815788
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Есть FireDac-Dataset(TFDMemTable), в нём есть поле TBlobField,
Этому полю привязан контрол, который с ним работает (записывает/читает в это поле, формат XML).

Надо понять, были ли внесены в это поле изменения ?

Я написал так:
Код: pascal
1.
if Field.OldValue <> Field.Value then


На чём вылезает ошибка Cannot convert vararray to integer.
Пробовал VarSameValue и VarCompareValue - ошибка.

Как можно сравнить эти два значения ?

п.с. у TBlobField есть свойство Modified, но оно в моём случае false, даже если я изменяю это поле.
...
Рейтинг: 0 / 0
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
    #39815802
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выгрузить в потоки и сравнить участки памяти?
...
Рейтинг: 0 / 0
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
    #39815834
Соколинский Борис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВыгрузить в потоки Можно просто VarArrayLock().
...
Рейтинг: 0 / 0
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
    #39815842
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо бы сначала доказать, что для BLOB'а OldValue вообще хранится.

IMHO & AFAIK

Например в Oracle BLOB это просто BLOB Locator. Данные в LOB меняются, но LOB Locator все равно неизменен. Т.ч. Modified = false для Oracle BLOB это действительно единственно возможное истинное значение. (так же по этой причине не срабатывают тригера в БД. Т.к. значение строки данных в таблице не меняется)
...
Рейтинг: 0 / 0
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
    #39815930
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВыгрузить в потоки и сравнить участки памяти?
Да, я так тоже хотел - перевести в Base64 и сравнить строки.
Но я если я создаю поток CreateBlobStream, то он создаётся от текущего значения. Я не могу создать поток от OldValue.
...
Рейтинг: 0 / 0
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
    #39815933
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соколинский БорисwadmanВыгрузить в потоки Можно просто VarArrayLock().
Я смотрел на исходники VarSameValue, там использовалась эта функция, но я не понял что с ней делать.

Можно пример ?
...
Рейтинг: 0 / 0
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
    #39816138
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BwadmanВыгрузить в потоки и сравнить участки памяти?
Да, я так тоже хотел - перевести в Base64 и сравнить строки.
Но я если я создаю поток CreateBlobStream, то он создаётся от текущего значения. Я не могу создать поток от OldValue.
Еще вариант: считать контрольные сумму до изменения и после.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сравнить 2 Variant (Field.OldValue и FIeld.Value)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]