(Access2000表) TADOBlobStream的Seek方法在SaveToFile时无效? |
|
chukong
一般會員 ![]() ![]() 發表:1 回覆:2 積分:0 註冊:2005-01-23 發送簡訊給我 |
我用BlobStream保存了AutoCAD2005的图形文档在Access2000里,用OLEContainer控件显示没有问题,当保存至文件时发现保存的文件(比原文件)前面增加了0x500D字节,AutoCAD不认了。
由于我要用FastReport打印示意图,需要把临时文件保存至磁盘
我发现用 BS.Seek($500D,soFromBeginning); 后,保存的文件和没用这句是一样的。
procedure TBuildInput.ButtonLoadClick(Sender: TObject); var sFileName : String; begin if (OpenDialog1.Execute) then begin sFileName := OpenDialog1.FileName; OLEContainer1.CreateObjectFromFile(sFileName,False); end; end; procedure TBuildInput.ButtonShowClick(Sender: TObject); var sFileName:String; BS:TADOBlobStream; begin BS:= TADOBlobStream.Create(TBlobField(AdoDM.BuildTable.FieldByName('LMap')),bmRead); if AdoDM.BuildTable.FieldByName('LMap').IsNull then exit; AdoDM.BuildTable.Edit; try sFileName := ExtractFilePath(Application.Exename) 'tmpBlob' '.' 'DWG'; BS.Seek($500D,soFromBeginning); //BS.Position:=$500D; BS.SaveToFile(sFileName); BS.Position:=0; OLEContainer1.LoadFromStream(BS); finally BS.Free; end; end; procedure TBuildInput.ButtonSaveClick(Sender: TObject); var TS:TStringStream; begin AdoDM.BuildTable.Edit; TS:=TStringStream.Create(''); try OLEContainer1.SaveToStream(TS); TS.Position:=0; AdoDM.BuildTable.FieldByName('LMap').AsString:=TS.DataString; AdoDM.BuildTable.Post; finally TS.Free; end; end;请各位朋友指点一下。 thx a lot 發表人 - chukong 於 2005/01/25 01:56:07 |
chukong
一般會員 ![]() ![]() 發表:1 回覆:2 積分:0 註冊:2005-01-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |