关于OLE数据传输时,报存“储空间不足...”的问题?
我找了段代码试从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!!!