|
|
|
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
|
|||
|---|---|---|---|
|
#18+
Добрый день, Есть FireDac-Dataset(TFDMemTable), в нём есть поле TBlobField, Этому полю привязан контрол, который с ним работает (записывает/читает в это поле, формат XML). Надо понять, были ли внесены в это поле изменения ? Я написал так: Код: pascal 1. На чём вылезает ошибка Cannot convert vararray to integer. Пробовал VarSameValue и VarCompareValue - ошибка. Как можно сравнить эти два значения ? п.с. у TBlobField есть свойство Modified, но оно в моём случае false, даже если я изменяю это поле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2019, 13:42 |
|
||
|
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
|
|||
|---|---|---|---|
|
#18+
Выгрузить в потоки и сравнить участки памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2019, 13:54 |
|
||
|
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
|
|||
|---|---|---|---|
|
#18+
wadmanВыгрузить в потоки Можно просто VarArrayLock(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2019, 14:34 |
|
||
|
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
|
|||
|---|---|---|---|
|
#18+
Хорошо бы сначала доказать, что для BLOB'а OldValue вообще хранится. IMHO & AFAIK Например в Oracle BLOB это просто BLOB Locator. Данные в LOB меняются, но LOB Locator все равно неизменен. Т.ч. Modified = false для Oracle BLOB это действительно единственно возможное истинное значение. (так же по этой причине не срабатывают тригера в БД. Т.к. значение строки данных в таблице не меняется) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2019, 14:43 |
|
||
|
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
|
|||
|---|---|---|---|
|
#18+
wadmanВыгрузить в потоки и сравнить участки памяти? Да, я так тоже хотел - перевести в Base64 и сравнить строки. Но я если я создаю поток CreateBlobStream, то он создаётся от текущего значения. Я не могу создать поток от OldValue. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2019, 16:53 |
|
||
|
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
|
|||
|---|---|---|---|
|
#18+
Соколинский БорисwadmanВыгрузить в потоки Можно просто VarArrayLock(). Я смотрел на исходники VarSameValue, там использовалась эта функция, но я не понял что с ней делать. Можно пример ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2019, 16:56 |
|
||
|
Сравнить 2 Variant (Field.OldValue и FIeld.Value)
|
|||
|---|---|---|---|
|
#18+
Valery_BwadmanВыгрузить в потоки и сравнить участки памяти? Да, я так тоже хотел - перевести в Base64 и сравнить строки. Но я если я создаю поток CreateBlobStream, то он создаётся от текущего значения. Я не могу создать поток от OldValue. Еще вариант: считать контрольные сумму до изменения и после. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2019, 07:44 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=73&tid=2039462]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
36ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 318ms |

| 0 / 0 |
