怎样将TMemoryStream附值给一个string类型
2011-12-16 13:53
190 查看
转自:http://www.100test.com/html/537/s__D4_F5_D1_F9_BD_ABTMem_537682.htm var s:TMemoryStream; str:string; begin ClientDataSet1.SaveToStream(s,dfXML). //但怎样将s附值给str.(str:=s) str := PChar(s.Position). 或: with s do begin setlength(str, size). Positon := 0. Read(PChar(str)^, size). end. 不好意思写错了,是str := PChar(s.Memory). 不过str := PChar(s.Memory).这样很危险,如果TMemoryStream 中不是以#0结束,或是字符串中间有#0的话,这样转换就会出错,还是用第二种方法保险.用move方法,并且在字符串结尾加上#0用move还不如直接 用TMemoryStream.Read方法,只要不转换成pchar就不用加#0下面算是标准的, 我经常看delphi vcl源码,borland是用的类似写法 SetLength(str, memoryStream.size) memoryStream.Positon := 0. memoryStream.Read(Pointer(str)^,memoryStream.size) 跟我的第二种方法是一样的呀这种方法有个缺点就是重新分配了内存,如果不想重新分配内存的话,直接用Memory指针好了.。 |
相关文章推荐
- jQuery Ajax中参数data传入string类型,请求数据多一个冒号的分析
- 将一个正整数N用二进制表示并转换为一个String类型的值S
- 在主函数中提示用户输入用户名和密码。另写一方法来判断用户输入是否正确。该方法分别返回一个bool类型的登录结果和和一个string类型的登录信息。如登录成功,返回true及“登录成功”,若登录失败则返回false及“用户名错误”或“密码错误”(使用out参数)
- ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象
- String属于“假引用类型”,代码为证(一个String引发的血案...)
- String类型与引用类型的一个区别
- 在泛型为Integer的ArrayList中存放一个String类型的对象。
- [每天一个知识点]18-Java语言-在switch中接受String类型
- 类型转换——如何将一个List<Map<String,String>>类型换成json格式
- 将一个正整数N用二进制表示并转化为一个string类型的值s
- 一个函数将int,float,double等类型转string
- 写一个方法clone; 实现js五种数据类型(string, number, boolean, array, object)的复制
- java面试要点---ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象。
- 编写一个pair存入一组string,int类型数据,并保持到vector中
- 我刚刚写了一个map的题目,还用到了#include<string>的头文件,下面我来总结一下 map<类型>变量 q q.find(找字符串) q.end()是否到达末尾
- C++中有string类,string是一个类不是一种类型,c语言中没有
- String限定类型的HashMap以及一个String工具类
- 如何让ArrayList<Integer>添加一个String类型的元素呢
- c++实现一个比较两个string类型的版本号的小demo
- 将任意一个对象中的所有String类型 的成员变量所对应字符串中的“b”改成“a”(利用反射)