![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Имеется база в firebird, требуется из нее выгрузить некоторые данные в .dbf-файлы, включая поля memo. Для этого использую компонент tDbf. В частности, поля типа memo заполняю через потоки следующим образом:
Код:
(Dbf1.FieldByName('P') as TBlobField).LoadFromStream(DBModule.query.CreateBlobStream(D BModule.query.FieldByName('P'),bmRead) as TStream); В процедуре procedure Код:
TMemoFile.WriteMemo(var BlockNo: Integer; ReadSize: Integer; Src: TStream); Код:
if ((bytesBefore + Src.Size + bytesAfter + RecordSize-1) div RecordSize) <= ((ReadSize + RecordSize-1) div RecordSize) then ( Src.Size - Src.Size) + RecordSize, то будет уже: -1994891087. Хотя если слагаемые поменять местами, то снова будет 0. Думал как-то избавиться от целочисленного деления, например сократив обе части на div RecordSize, но так ИМХО несколько нарушится логика программы. Также пытался сделать вместо div RecordSize: div ((Src.Size - Src.Size) + RecordSize), но все равно возникала та же ошибка. Код: Код:
rs: Int64; rs:= (Src.Size - Src.Size) + RecordSize; и замена условия на: if ((bytesBefore + Src.Size + bytesAfter + rs-1) div rs) <= ((ReadSize + rs-1) div rs) then Самое странное, что было время, когда программа нормально отрабатывала, но что-то пошло не так и перестала... SVN не юзаю, так что откатиться не могу. Также странно, что по запросу "Division by zero tdbf" гугл молчит, значит ошибка не распространенная. Может я неправильно потоки использую для переноса blob firebird в memo .dbf? Хотя пробую наполнять memo из файла таким образом: Код:
(Dbf1.FieldByName('P') as TBlobField).LoadFromFile('c:\ses.txt'); TDbf использовался не от Брусникина Игоря Викторовича (http://www.delphisources.ru/pages/so...comp_tdbf.html), а вот этот: http://tdbf.sourceforge.net/ Первый вроде как с memo работать не умеет. MAD: пользуемся тегами, или последуют санкции. Последний раз редактировалось M.A.D.M.A.N., 24.10.2013 в 09:11. |