Чтение OLE из Blob поля Paradox

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: Eryk

…после моих дискуссий с людьми из службы технической поддержки Borland вывод один — это невозможно!

Попробуйте так:

procedure TForm1.SpeedButton1Click(Sender: TObject);

var

b: TBlobStream;

begin

try

b := TBlobStream.Create((Table1.FieldByName(‘OLE’) as TBlobField),bmRead);

OLEContainer1.LoadFromStream(b);

finally

b.free;

end;

end;

…и:

procedure TForm1.SpeedButton2Click(Sender: TObject);

var

b: TBlobStream;

begin

try

Table1.Insert;

b := TBlobstream.Create((Table1.FieldByName(‘OLE’) as TBlobField),bmReadWrite);

OLEContainer1.SaveToStream(b);

Table1.Post;

finally

b.free;

end;

end;

Я, кажется, припоминаю несколько ошибок GPFs с этим кодом, но это, вероятно, связано с тем, что я использую WinNT с другим распределением памяти… тем не менее, основные функции работали как положено (т.е. данные сохранялись и загружались). Основная специфика проявилась в том, что PdoxWIN не смог прочесть данные TOLEContainer. Но это результаты моих экспериментов и предположений, исходя из которых PdoxWIN ожидает 8-байтовый заголовок BLOB-поля, который ему просто не дает TOLEContainer… если это так, то это легко обойти.

{/codecitation}

Добавить комментарий