求救生成xml用ADOQuery_Bind.SaveToFile('aaa.xml',pfXML)速度很快,能否直接导入stream不生成临时文件aaa.xml 生成xml用ADOQuery_Bind.SaveToFile('aaa.xml',pfXML)速度很快,能否直接导入stream不生成临时文件aaa.xml,因为当非常多的用户访问数据库时可能会生成相同的aaa.xml,当再用loadfrom时可能xml内容会搞错。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不能,直接导入stream不生成临时文件aaa.xml,没有文件,哪来的文件流 或者有没有其他的控件,c++的也可以,我想把xml格式转换成widestring,用web service传给客户端。 我测试用ADOQuery查询后,再用for循环生成xml花的时间很长,1万行记录用for生成xml要花20秒以上,如果直接用SaveToFile几秒就完成了。 如果ADOQuery_Bind有SaveToStream的方法,就可以 uses adoint,activex;const IID__RecordsetEx: TGUID = '{00000556-0000-0010-8000-00AA006D2EA4}';type _RecordsetEx = interface(_Recordset) ['{00000556-0000-0010-8000-00AA006D2EA4}'] procedure Save(Destination: OleVariant; PersistFormat: PersistFormatEnum); safecall; end;procedure TForm2.Button1Click(Sender: TObject);var r: _RecordsetEx; rs: TStringStream; ris: TStreamAdapter; ris_ref: IStream;begin r := adoQuery1.Recordset as _RecordsetEx; rs := TStringStream.Create(''); try ris_ref := TStreamAdapter.Create(rs) as IStream; try r.Save(ris_ref, adPersistXML); ShowMessage(rs.DataString); finally ris_ref := Nil; end; finally rs.Free; end;end; 在delphi7.0下测试非常满意.今天我装了delphi2009,测试时用length(rs.DataString)不等于rs.size,而且再用rs.DataString还原成另外一个stream变量时,会和之前stream的不一样。可能是rs.DataString时有编码问题。又麻烦了。 使用TStringStream只是一个功能演示.你可以直接使用TMemoryStream等等. delphi7是可以的。2009还是有问题 问题解决了,在delphi2009里TStringStream里增加TEncoding功能,所以改成 TStringStream.Create('',TEncoding.UTF8); 我的下周代码 怎么老有“Destination file already exists.”错误啊 谁有正确代码啊?? StringGrid中的Checkbox响应!Delphi7. 急,高分求教:自动登陆网站然后自动下载一个文件到指定目录,怎么实现? 如何直接读取http上的inf文件 求教indy的问题,给100!!!! Delphi编写ASP组件,返回记录集的问题 考考你的算法思想,come on 请教!急!!!在Delphi中怎样保持两个表的一致性 加了分后要散分了!请链接! 询问listbox组件配合adoquery的使用方法 窗体打印 delphi7一个类声明问题?小白级
uses
adoint,activex;const
IID__RecordsetEx: TGUID = '{00000556-0000-0010-8000-00AA006D2EA4}';
type
_RecordsetEx = interface(_Recordset)
['{00000556-0000-0010-8000-00AA006D2EA4}']
procedure Save(Destination: OleVariant; PersistFormat: PersistFormatEnum); safecall;
end;procedure TForm2.Button1Click(Sender: TObject);
var
r: _RecordsetEx;
rs: TStringStream;
ris: TStreamAdapter;
ris_ref: IStream;
begin
r := adoQuery1.Recordset as _RecordsetEx;
rs := TStringStream.Create('');
try
ris_ref := TStreamAdapter.Create(rs) as IStream;
try
r.Save(ris_ref, adPersistXML);
ShowMessage(rs.DataString);
finally
ris_ref := Nil;
end;
finally
rs.Free;
end;
end;
今天我装了delphi2009,测试时用length(rs.DataString)不等于rs.size,而且再用rs.DataString还原成另外一个stream变量时,会和之前stream的不一样。可能是rs.DataString时有编码问题。又麻烦了。