PDA

View Full Version : مشکل با OleContainer



Kamyar.Kimiyabeigi
سه شنبه 28 فروردین 1386, 12:12 عصر
من میخوام به کمک OleContainer فایل word رو داخل برنامه ببینم ولی پیغام خطای Invalid Stream Format میده!!!!!


procedure TForm2.FormShow(Sender: TObject);
var
stream: TmemoryStream;
begin
ADOTable1.Open;

stream := TMemoryStream.Create;
ADOTable1TempFile.SaveToStream(stream);
stream.Position := 0;
OleContainer1.LoadFromStream(stream);
OleContainer1.DoVerb(ovshow);
stream.Free;
end;

mjdeveloper
سه شنبه 28 فروردین 1386, 15:01 عصر
می خواهی محتویات جدول رو بفرستی توی word یا نه؟

Kamyar.Kimiyabeigi
سه شنبه 28 فروردین 1386, 16:01 عصر
می خواهی محتویات جدول رو بفرستی توی word یا نه؟

بله قبلا" بوسیله Stream داخل جدولی قرار گرفته حالا فرضا کاربر میخواد فقط ببینه

vcldeveloper
چهارشنبه 29 فروردین 1386, 10:15 صبح
در زمان ذخیره داده ها در بانک هم از OleContainer استفاده کردید؟ یعنی فایل Word را که در OleContainer شده بود به بانک منتقل کردید؟
به نظر میاد که OleContainer برای خودش از یک فرمت خاص در محتوی stream استفاده میکنه. به سورس متد مربوطه در OleCtnrs.pas دقت کنید:


procedure TOleContainer.LoadFromStream(Stream: TStream);
...
begin
...
Stream.ReadBuffer(Header, SizeOf(Header));
if (Header.Signature <> StreamSignature) and not FOldStreamFormat then
raise EOleError.CreateRes(@SInvalidStreamFormat);
...
end;
در این صورت اگر داده ها را از طریقی غیر از OleContainer.SaveToStream در بانک ذخیره کرده باشید، با این خطا مواجه میشید.
احتمالا در صورتی که خصوصیت OldStreamFormat را True کنید، مشکل حل میشه.