1,delphi中XMl attribute.value中流的读写 
  2,adoquery clientdataset savetofile  xml 时 流字段的存储方式帮忙讲解下

解决方案 »

  1.   

    一般用base64编码
    速度会慢一点
      

  2.   

    2,adoquery clientdataset savetofile xml 时 流字段的存储方式delphi中数据集对blob字段的存储也是采用base64编码吗
      

  3.   

    测试了一下:var
      MM:TStringStream;
      Re:String;
      newNode, newNodeAdd: IXMLNode;
    begin
      MM:=TStringStream.Create('');
      Img1.Picture.Bitmap.SaveToStream(MM);
      MM.Position:=0;
      Re:=StrToBase64(MM.DataString);
      XMLDocument1.XML.Clear;
      XMLDocument1.Active := True;                {必须先激活}
      XMLDocument1.Version := '1.0';              {设置版本}
      XMLDocument1.Encoding := 'GB2312';
      newNode := XMLDocument1.AddChild('科室名单');
      newNodeAdd:=newNode.AddChild('人员');
      newNodeAdd.SetAttribute('职务', Re);
      XMLDocument1.SaveToFile('D:\4.XML');
      Showmessage(Inttostr(MM.Size));
      MM.Free;
    以上将图片写到string流中,然后通过base64编码后,写入xml
    var
      MM:TStringStream;
      Tem:Base64String;
    begin
      Tem:=XMLDocument1.DocumentElement.ChildNodes[0].Attributes['职务'];
      Tem:=Base64ToStr(Tem);
      MM:=TStringStream.Create(Tem);
      MM.Position:=0;
      Showmessage(Inttostr(MM.Size));
      IMG2.Picture.Bitmap.LoadFromStream(mm);
      mm.Free;
    解码还原图  成功 没错还有一个问题ado的savetofile 是否采用的也是base64
      

  4.   

    adoquery 的savetofile 谁帮忙解释下,对blob如何处理的
      

  5.   

    是这样的,要求是解析adoquery.savetofile后的XML,但是始终对立面的blob字段解析不正确,有人说adoquery保存前事 采用utf8编码的 但是我测试后还是不成功,怎么办 有人知道吗
      

  6.   

    研究后发现
          SQLSERVER数据库保存image字段讲二进制流转换为十六进制字符串进行保存,
       ado并没进行编码处理,只是将16进制字符串写入文件   在处理这些问题时只需使用hextobin,bintohex函数 就可以了,   hextobin对16进制字符串进行处理前,需要全部转小写以及对每行字符串进行trim处理,然后重组一列字符串,然后通过hextobin处理后,得到二进制值,写入流中