線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1292
推到 Plurk!
推到 Facebook!

Binary Field 和 XML

尚未結案
LPH
一般會員


發表:53
回覆:43
積分:19
註冊:2003-04-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-28 11:40:13 IP:218.162.xxx.xxx 未訂閱
有誰知道如何將 Binary 欄位的資料放入 XMLDocutment .. 用 mychild.appendChild(mydoc.createComment(Query1.parambyname('mbinfield').asstring)); 好像有問題....
領航天使
站長


發表:12216
回覆:4186
積分:4084
註冊:2001-07-25

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-20 21:41:19 IP:192.168.xxx.xxx 未訂閱
引言: 有誰知道如何將 Binary 欄位的資料放入 XMLDocutment .. 用 mychild.appendChild(mydoc.createComment(Query1.parambyname('mbinfield').asstring)); 好像有問題....
有一個辦法是您可以把xml存成檔案, 然後將整個檔案存到Blob欄位中, 請參考:http://delphi.ktop.com.tw/topic.php?topic_id=19505 ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~
solnone
中階會員


發表:2
回覆:97
積分:69
註冊:2003-05-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-26 20:46:53 IP:203.66.xxx.xxx 未訂閱
若你的欄位型態是memo,可以用下面的方式 procedure TForm1.Button1Click(Sender: TObject); var   xmldoc: Variant;   Node, NewNode: Variant;   i: integer; begin   xmldoc := CreateOleObject('Msxml.DOMDocument');   xmldoc.LoadXML(''); Node := xmldoc.createCDATASection('Notes'); Node.text := Table1.FieldByName('Notes').AsString; xmldoc.documentElement.appendChild(Node); Memo1.Lines.Text := xmldoc.documentElement.xml; end; 若你的欄位是binary,有null字元的話,請用TSream 取出資料, 加以編碼(base64 or HEX ...),再給 Node.text
solnone
中階會員


發表:2
回覆:97
積分:69
註冊:2003-05-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-03 18:14:45 IP:210.68.xxx.xxx 未訂閱
使用delphi sample db animals.dbf 中的 bmp欄位 以 TStream 把 blobfield 讀出 以 BinToHex 轉成 hex text    function GetFieldToHEX(Field: TField): string; var   ReadByte: integer;   Stream: TStream;   buffer: array [0..1023] of Char;   TextBuffer: array [0..2045] of Char; begin   Stream := TMemoryStream.Create;   try     if Field is TBlobField then begin       (Field as TBlobField).SaveToStream(Stream) ;     end else       raise Exception.Create('Not BlobField!');     Stream.Position := 0;     while Stream.Size <> Stream.Position do begin       if (Stream.Size - Stream.Position) > Length(buffer) then begin         ReadByte := Stream.Read(buffer, Length(buffer));       end else begin         FillChar(buffer, Length(buffer), 0);         ReadByte := Stream.Read(buffer, Stream.Size - Stream.Position);       end;       BinToHex(buffer, TextBuffer, ReadByte);       Result := Result + Copy(TextBuffer, 0, ReadByte * 2);     end;   finally     Stream.Free;   end; end;    procedure TForm1.Button1Click(Sender: TObject); var   xmldoc: Variant;   Node: Variant; begin   xmldoc := CreateOleObject('Msxml.DOMDocument');   xmldoc.LoadXML(''); Node := xmldoc.createCDATASection(GetFieldToHEX(Table1.FieldByName('BMP'))); xmldoc.documentElement.appendChild(Node); Memo1.Lines.Text := xmldoc.documentElement.xml; end;
系統時間:2024-07-01 20:46:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!