关于OLE数据传输时,报存“储空间不足...”的问题?

kumana 2011-12-07 11:24:54
我找了段代码试从Word里提取数据

代码如下:

function TfrmCWMain.GetRTFFormat(DataObject: IDataObject; var RTFFormat: TFormatEtc): Boolean;
var
Formats: IEnumFORMATETC;
TempFormat: TFormatEtc;
cfRTF: LongWord;
Found: Boolean;
begin
try
OleCheck(DataObject.EnumFormatEtc(DATADIR_GET, Formats));
cfRTF := RegisterClipboardFormat('Rich Text Format');
Found := False;
while (not Found) and (Formats.Next(1, TempFormat, nil) = S_OK) do
if (TempFormat.cfFormat = cfRTF) then
begin
RTFFormat := TempFormat;
Found := True;
end;
Result := Found;
except
Result := False;
end;
end;

procedure TfrmCWMain.GetRTF(WordDoc: _Document);
var
DataObject: IDataObject;
RTFFormat: TFormatEtc;
ReturnData: TStgMedium;
Buffer: PChar;
begin
if Assigned(WordDoc) then
begin
try
WordDoc.QueryInterface(IDataObject, DataObject);
if GetRTFFormat(DataObject, RTFFormat) then
begin
OleCheck(DataObject.GetData(RTFFormat, ReturnData)); Buffer := GlobalLock(ReturnData.hglobal);

RichEditWord.Lines.Text := Buffer ;
GlobalUnlock(ReturnData.hglobal);

CoTaskMemFree(RTFFormat.ptd);
Dispose(RTFFormat.ptd);
ReleaseStgMedium(ReturnData);
end;
except
end;
end;
end;

打开多页的Word,我拆分Word页读取,运行到某一页就会报错,说“存储空间不足,无法操作”错误,出在标红的语句,实在是找不到错误在哪,Help!!!
...全文
139 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
kumana 2011-12-09
  • 打赏
  • 举报
回复
没人知道原因,或是遇到过吗?

1,184

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧