这个问题很多帖子都有,我这给点提示 var MemSize: Integer; Buffer: PChar; MyFile: TFileStream; Stream: TBlobStream; begin MyFile:=TFileStream.Create('c:\temp.tmp',fmCreate); with table1 do begin Open; Stream:=TBlobStream.Create(FieldByName('Doc') as TBlobField, bmRead); MemSize := Stream.Size; Inc(MemSize); Buffer := AllocMem(MemSize); try Stream.Read(Buffer^,MemSize); MyFile.Write(Buffer^,MemSize); statictext1.caption:='文件名:'+FieldByName('Name').Asstring; statictext2.caption:='文件大小:'+FieldByName('Size').Asstring+'字节'; finally MyFile.Free; Stream.Free; end; end; if FileExists('c:\temp.DOC') then DeleteFile('c:\temp.DOC'); if FileExists('c:\temp.tmp') then begin RenameFile('c:\temp.tmp', 'c:\temp.DOC'); Doc_ole.CreateObjectFromFile('c:\temp.DOC',False); Doc_ole.Run; 希望你会满意
procedure TComposetypeForm.DbToWord(ViewADOQuery:TADOQuery;TitleFile,AnswerFile:String);//从数据库到Word临时文件 var TitleSize,AnswerSize:integer;TitleBuffer,AnswerBuffer:PChar; TitleFileStream,AnswerFileStream:TFileStream;TitleBlobStream,AnswerBlobStream:TStream; begin if ViewADOQuery.RecNo>0 then begin TitleFileStream:=TFileStream.Create(MainForm.ApplicationPath+'Title.tmp',fmCreate); AnswerFileStream:=TFileStream.Create(MainForm.ApplicationPath+'Answer.tmp',fmCreate); with ViewADOQuery do begin open; TitleBlobStream:=CreateBlobStream(FieldByName('Title')as TBlobField,bmRead); TitleSize:=TitleBlobStream.Size;TitleBuffer:=AllocMem(TitleSize); AnswerBlobStream:=CreateBlobStream(FieldByName('Answer')as TBlobField,bmRead); AnswerSize:=AnswerBlobStream.Size;AnswerBuffer:=AllocMem(AnswerSize); Try TitleBlobStream.Read(TitleBuffer^,TitleSize);TitleFileStream.Write(TitleBuffer^,TitleSize); AnswerBlobStream.Read(AnswerBuffer^,AnswerSize);AnswerFileStream.Write(AnswerBuffer^,AnswerSize); finally TitleBlobStream.Free;TitleFileStream.Free; AnswerBlobStream.Free;AnswerFileStream.Free; end; end; if FileExists(TitleFile) then DeleteFile(TitleFile); if FileExists(MainForm.ApplicationPath+'Title.tmp') then Renamefile(MainForm.ApplicationPath+'Title.tmp',TitleFile); if FileExists(AnswerFile) then DeleteFile(AnswerFile); if FileExists(MainForm.ApplicationPath+'Answer.tmp') then Renamefile(MainForm.ApplicationPath+'Answer.tmp',AnswerFile); End; end;
很容易的
你好好找找吧.
对了, 好多人都提到李维写的书, 到底是什么书呀? 叫什么名字呀? 我也很想看看...
var
MemSize: Integer;
Buffer: PChar;
MyFile: TFileStream;
Stream: TBlobStream;
begin
MyFile:=TFileStream.Create('c:\temp.tmp',fmCreate);
with table1 do
begin
Open;
Stream:=TBlobStream.Create(FieldByName('Doc') as TBlobField, bmRead);
MemSize := Stream.Size;
Inc(MemSize);
Buffer := AllocMem(MemSize);
try
Stream.Read(Buffer^,MemSize);
MyFile.Write(Buffer^,MemSize);
statictext1.caption:='文件名:'+FieldByName('Name').Asstring;
statictext2.caption:='文件大小:'+FieldByName('Size').Asstring+'字节';
finally
MyFile.Free;
Stream.Free;
end;
end;
if FileExists('c:\temp.DOC') then
DeleteFile('c:\temp.DOC');
if FileExists('c:\temp.tmp') then
begin
RenameFile('c:\temp.tmp', 'c:\temp.DOC');
Doc_ole.CreateObjectFromFile('c:\temp.DOC',False);
Doc_ole.Run;
希望你会满意
procedure TComposetypeForm.DbToWord(ViewADOQuery:TADOQuery;TitleFile,AnswerFile:String);//从数据库到Word临时文件
var
TitleSize,AnswerSize:integer;TitleBuffer,AnswerBuffer:PChar;
TitleFileStream,AnswerFileStream:TFileStream;TitleBlobStream,AnswerBlobStream:TStream;
begin
if ViewADOQuery.RecNo>0 then
begin
TitleFileStream:=TFileStream.Create(MainForm.ApplicationPath+'Title.tmp',fmCreate);
AnswerFileStream:=TFileStream.Create(MainForm.ApplicationPath+'Answer.tmp',fmCreate);
with ViewADOQuery do
begin
open;
TitleBlobStream:=CreateBlobStream(FieldByName('Title')as TBlobField,bmRead);
TitleSize:=TitleBlobStream.Size;TitleBuffer:=AllocMem(TitleSize);
AnswerBlobStream:=CreateBlobStream(FieldByName('Answer')as TBlobField,bmRead);
AnswerSize:=AnswerBlobStream.Size;AnswerBuffer:=AllocMem(AnswerSize);
Try
TitleBlobStream.Read(TitleBuffer^,TitleSize);TitleFileStream.Write(TitleBuffer^,TitleSize);
AnswerBlobStream.Read(AnswerBuffer^,AnswerSize);AnswerFileStream.Write(AnswerBuffer^,AnswerSize);
finally
TitleBlobStream.Free;TitleFileStream.Free;
AnswerBlobStream.Free;AnswerFileStream.Free;
end;
end;
if FileExists(TitleFile) then DeleteFile(TitleFile);
if FileExists(MainForm.ApplicationPath+'Title.tmp') then Renamefile(MainForm.ApplicationPath+'Title.tmp',TitleFile);
if FileExists(AnswerFile) then DeleteFile(AnswerFile);
if FileExists(MainForm.ApplicationPath+'Answer.tmp') then Renamefile(MainForm.ApplicationPath+'Answer.tmp',AnswerFile);
End;
end;
不知那位高手说的李维的ADO那本书是哪一本?请明示,谢谢。