Форум: "Базы";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
ВнизОшибка в BLOB Paradox Найти похожие ветки
← →
OlegKrt (2003-01-06 08:22) [0]Возникла проблема при чтении из BLOB поля. Там хранятся бинарные данные. При чтении данных через BlobStream машина виснет, на DbiGetBlob. причем если читать из потока по 1-му байту зависнуть может например на 90-м или 110-м байте.
Тип поля установлен как BLOB Binary длина 100.
← →
Дмитрий К.К. (2003-01-06 09:25) [1]Ошибка в 17-й строке.
← →
OlegKrt (2003-01-06 09:55) [2]17-строке чего?
← →
Дмитрий К.К. (2003-01-06 11:20) [3]Код в студию! ;)
← →
Геннадий (2003-01-06 11:48) [4]А может вот так попробуешь?
TBlobField(Table.FieldByName("Description")).BlobType:= ftMemo;
TBlobField(Table.FieldByName("Description")).Assign(DescMemo.Lines);
Только сам подбери тип и с чем связывать.
← →
OlegKrt (2003-01-06 11:56) [5]var
Buf:array of byte;
...
SetLength(Buf,1000);
try
BS := T.CreateBlobStream(T.FieldByName("INFO"),bmRead) as TBlobStream;
try
FillChar(Buf[0],1000,0);
n := BS.Size;
BS.Read(Buf[0],n); >>>>>>>>>>здесь зависает
finally
BS.Free;
end;
finally
SetLength(Buf,0);
end;
размеры Blob-ов 72,108,144 и т.п.
если читать в цикле по 1-му байту зависать может при чтении какого либо серединного байта.
Что интересно, все было хорошо, но иногда появляются сбойные записи. Сперва вылечил прозто заменой BLOBA из архива. Но в чем причина может быть?
← →
Геннадий (2003-01-06 12:43) [6]Маленькое замечание:
SetLength лучше писать после BS := T.CreateBlobStream(T.FieldByName("INFO"),bmRead) as TBlobStream; когда уже известен размер.
SetLength(Buf, BS.Size);
И ещё. А зачем ты пишешь Buf[0] ? Я думаю, нужно просто Buf.
← →
Дмитрий К.К. (2003-01-06 12:43) [7]Странный способ чтения BLOB-поля. А что нужно получить в итоге?
← →
OlegKrt (2003-01-06 13:15) [8]у меня массив моей структуры храниться в BLOB.
Все четается нормально и правильно.
Но в некоторых записях происходит зависание на каком нибудь байте.
т.е. можно провести аналогию как будто поврежден сектор на диске. Есть ли средства проверки данных в BLOB и их восстановления?
← →
Дмитрий К.К. (2003-01-06 14:45) [9]Утилиту dtutil32.exe юзал? Работает с TUTIL32.DLL
← →
Дмитрий К.К. (2003-01-06 14:46) [10]У меня BLOB тоже, бывало, слетал. BLOB has been modified и все такое прочее.
← →
OlegKrt (2003-01-08 09:33) [11]To Дмитрий К.К.
dtutil32.exe исправил коечто т.е. теперь при чтении не зависает, хотя попортились некоторые данные.
А нет идей почему такое происходит?
← →
Дмитрий К.К. (2003-01-08 11:23) [12]Доступ какой? Многопользовательский?
← →
OlegKrt (2003-01-08 14:37) [13]Да многопользовательский.
Но с той базой, где произошли сбои работал только один пользователь, поэтому незнаю на что грешить
← →
Дмитрий К.К. (2003-01-08 15:46) [14]Делай блокировку LockTable во время записи, после постинга - UnlockTable. Еще надо обрабатывать одно событие, во время которого второму пользователю будет выдаваться предупреждение о том, что запись блокирована.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.01.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c