全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:934
推到 Plurk!
推到 Facebook!

(Access2000表) TADOBlobStream的Seek方法在SaveToFile时无效?

 
chukong
一般會員


發表:1
回覆:2
積分:0
註冊:2005-01-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-25 01:23:06 IP:221.224.xxx.xxx 未訂閱
我用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-25 02:07:59 IP:221.224.xxx.xxx 未訂閱
在Access表里面,经过 OLEContainer控件处理的数据都会增加 如OLEContainer1.SavetoFile 或OLEContainer1.SavetoStream都会加此数据进去,可恶的Access
系統時間:2024-06-28 18:33:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!