急,怎样将OLE对象导入到文件中
本人需要将OLE对象写入到一个文件中,然后再将此数据从文件倒入到OLE对象中,如何处理,急 问题点数:0、回复次数:16Top
1 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2003-08-02 17:34:53 得分 0
http://www.access911.net/index.asp?board=4&mode=3&recordid=75FAB21E12DC
http://www.access911.net/index.asp?board=4&mode=3&recordid=74FAB51E13DCTop
2 楼zjcxc(邹建)回复于 2003-08-02 20:59:42 得分 0
我知道程序中是可以的.Top
3 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2003-08-02 22:25:24 得分 0
能否说出如何写程序,我知道可以通过去掉头字节来得到ole引擎处理过的文件,但是相关资料不足,只能处理少数文件,zjcxc(邹建) 你有就请公布一下Top
4 楼zangyice()回复于 2003-08-09 12:40:49 得分 0
希望能介绍一下如何处理。Top
5 楼tmtony(轻烟)回复于 2003-08-18 20:45:40 得分 0
可以处理出来,方法也是处理头文件,但必须先分析class知道其扩展名才能将其另存为正确的文件。Top
6 楼cx3322()回复于 2003-08-19 18:44:55 得分 0
OLE的语法句子书上有呀,先写怎样连接到该文件中去,Top
7 楼HsyPrg(图灵心)回复于 2003-09-26 14:49:08 得分 0
//////////////////////////////////////////////////////////////////////////
//将指定文件导入ACCESS表:
//其中:ResField-为存储数据的TBolbField,szFile-为数据文件
function TDataModuleApp.SaveFileToAccess(ResField:TBlobField;szFile: String):DFImportResult;
var nhDl:Integer;
ResStream:TAdoBlobStream;
begin
Result:=DFIFileImpOkay;
if not FileExists(szFile) then
begin
Result:=DFIFileNotFound;
Exit;
end;
nhDl:=FileOpen(szFile,fmOpenRead);
if nHdl=-1 then
begin
Result:=DFIFileDenied;
Exit;
end;
FileClose(nHdl);
////////////////////////////////////
ResStream:=nil;
try
ResStream:=TAdoBlobStream.Create(ResField,bmWrite);
try
ResStream.LoadFromFile(szFile);
except
Result:=DFIFileImpErr;
end;
finally
if Assigned(ResStream) then ResStream.Free;
end;
////////////////////////////////////
end;
////////////////////////////////////////////////////////////////////
//从ACCESS的BLOBFIELD字段提取数据到文件,以下提取的为ANI文件,请参考
procedure TDataModuleApp.GetAppResource;
var szResFile:String;
Pos:TPoint;
begin
AdoTable.Close;
AdoTable.TableName:='Resource';
AdoTable.IndexName:='ResName';
AdoTable.Open;
AdoTable.Filter:='TaskId<0 AND ResType = '+QuotedStr('ANI');
//AdoTable.Filter:='ResType = '+QuotedStr('ANI');
AdoTable.Filtered:=True;
AdoTable.First;
while not AdoTable.Eof do
begin
szResFile:=GszTmpPath+Trim(AdoTable.FieldByName('ResName').AsString);
try
TBlobField(AdoTable.FieldByName('Resource')).SaveToFile(szResFile);
except
GetCursorPos(Pos);
MsgBox(Pos,
#10#10#10#10' 获取面板资源失败!',[msgOk],(msgWarn),(bkBottom));
break;
end;
AdoTable.Next;
end;
AdoTable.Filtered:=FALSE;
AdoTable.Filter:='';
AdoTable.Close;
//////////////////////////////////////////////////////////////////////////////
//Load XP Style Normal Resource:
szResFile:=GszTmpPath+_CursorFlWXPNORMAL;
if FileExists(szResFile) then
begin
Screen.Cursors[_CursorScrWXPNORMAL]:=LoadCursorFromFile(PCHAR(szResFile));
DeleteFile(szResFile);
end;
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//Load XP Style Busy Resource:
szResFile:=GszTmpPath+_CursorFlWXPBUSY;
if FileExists(szResFile) then
begin
Screen.Cursors[_CursorScrWXPBUSY]:=LoadCursorFromFile(PCHAR(szResFile));
DeleteFile(szResFile);
end;
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//Load XP Style HSPLIT Resource:
szResFile:=GszTmpPath+_CursorFlWXPHSPLIT;
if FileExists(szResFile) then
begin
Screen.Cursors[_CursorScrWXPHSPLIT]:=LoadCursorFromFile(PCHAR(szResFile));
DeleteFile(szResFile);
end;
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//Load XP Style HSPLIT Resource:
szResFile:=GszTmpPath+_CursorFlWXPMOVE;
if FileExists(szResFile) then
begin
Screen.Cursors[_CursorScrWXPMOVE]:=LoadCursorFromFile(PCHAR(szResFile));
DeleteFile(szResFile);
end;
//////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//Load XP Style SHRINK Resource:
szResFile:=GszTmpPath+_CursorFlWXPSHRINK;
if FileExists(szResFile) then
begin
Screen.Cursors[_CursorScrWXPSHRINK]:=LoadCursorFromFile(PCHAR(szResFile));
DeleteFile(szResFile);
end;
//////////////////////////////////////////////////////////////////////////////
end;
Top
8 楼zjcxc(邹建)回复于 2003-10-28 15:56:24 得分 0
'从ole1保存到文件
Private Sub Command1_Click()
Dim ifn&
ifn = FreeFile
Open "c:\a.dat" For Binary As ifn
OLE1.SaveToFile ifn
Close ifn
End Sub
'从文件中读取到ole1
Private Sub Command2_Click()
Dim ifn&
ifn = FreeFile
Open "c:\a.dat" For Binary As ifn
OLE1.ReadFromFile ifn
Close ifn
End Sub
Top
9 楼zjcxc(邹建)回复于 2003-10-28 15:58:52 得分 0
to: changechange(改了又改)
楼主只是要求将ole保存到文件再用ole调出.所以上面的VB代码就可以了.
不知道是否我理解有误.
Top
10 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2003-10-29 23:46:06 得分 0
不知道你这样做,还是原来那个文件吗?只是用二进制流保存成文件而已。
比如我加进ole的是一个xls文件(手动的,不是用stream写入那种),我用你这种方法再次保存成xls文件,用 excel能够打开吗?Top
11 楼zjcxc(邹建)回复于 2003-11-01 15:40:23 得分 0
当然不能,但楼主好像也没有这样要求吧?Top
12 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-03 13:52:35 得分 0
手动添加ole对象如果要用程序读出的话需要将文件头去掉,因为ole手动添加的时候会自己在前面加上一些描述信息Top
13 楼lphy(心亘)回复于 2003-12-18 15:20:25 得分 0
vb中怎么样自动给文件加上ole描述信息呢?Top
14 楼lphy(心亘)回复于 2003-12-19 13:54:08 得分 0
顶Top
15 楼changechange(http://access911.net 是我的个人网站,欢迎光临)回复于 2003-12-20 00:09:38 得分 0
http://www.access911.net/index.asp?board=4&mode=3&recordid=75FAB21E12DCTop
16 楼AutoDataManager(内存数据库控件)回复于 2004-01-11 00:33:17 得分 0
MarkTop




