Вот имеется следующий код, который проходится по записям с BLOB-полями и который должен по идее дописывать в файл содержимое очередного BLOB-поля.
Код:
bigfilename := 'c:\Temp\test10.rtf';
IF EXISTS(bigfilename) THEN ERASE(bigfilename);
BigFile.WRITEMODE(TRUE);
BigFile.TEXTMODE(TRUE);
BigFile.CREATE(bigfilename);
BigFile.OPEN(bigfilename);
IF Archiv.FINDSET THEN BEGIN
REPEAT
// begin writing of Navision-Text
BigFile.SEEK(Position);
BigFile.WRITE(Archiv.Description);
Position := BigFile.POS;
// end writing of Navision-Text
Archiv.CALCFIELDS(Attachment);
IF Archiv.Attachment.HASVALUE THEN BEGIN
Archiv.Attachment.CREATEINSTREAM(InStreamBLOB);
// begin writing of .rtf file from BLOB
REPEAT
InStreamBLOB.READTEXT(CurrentLine);
BigFile.SEEK(Position);
BigFile.WRITE(CurrentLine);
Position := BigFile.POS;
UNTIL InStreamBLOB.EOS;
// end writing of .rtf file from BLOB
END;
UNTIL Archiv.NEXT = 0;
END;
текст из навижена (Description) отображается в rtf файле нормально.
Проблема: содержимое BLOB'a представляется в виде текста обрамлённым всей форматирующей абракадаброй в открытом тексте в несколько сот строк (color,fonts, Тimes New Roman... )
Код:
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31506\stshfloch31506\stshfhich31506\stshfbi31507\deflang1031\deflangfe1031\themelang1031\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;}
{\f37\fbidi \fswiss\fcharset0\fprq2{\*\
итд.
Если писать в файл с TEXTMODE(FALSE) то дело ещё хуже, форматирование представляется квадратиками.
Если выполнять только код для записи BLOB'ов, то записывается в файл почему-то только BLOB самой первой записи из таблицы, НО отображается в файле корректно.
Кто знает, в чём проблема?