Показать сообщение отдельно
Старый 12.09.2009, 13:19   #2  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Вот имеется следующий код, который проходится по записям с 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 самой первой записи из таблицы, НО отображается в файле корректно.
Кто знает, в чём проблема?