delphi 对象序列化保存到文件中,反序列化后出现乱码
发布网友
发布时间:2023-05-31 01:12
我来回答
共1个回答
热心网友
时间:22小时前
首先,要确保你对象的成员写在published下。还有你读的代码少了创建TmyClass的实例了,所以会报错。我改了一下是可以的,代码如下:
//TmyClass定义
Type
TMyClass=Class(TComponent)
private
Fage: Integer;
Faddress: String;
FName: String;
published
property Name:String Read FName Write FName;
property age:Integer Read Fage Write Fage;
property address:String Read Faddress Write Faddress;
end;
//保存
procere TForm4.Button1Click(Sender: TObject);
var
my: TMyClass;
fs: TFileStream;
begin
my := TMyClass.Create(self);
my.name := 'rocky';
my.age := 20;
my.address := 'hangzhou';
fs := TFileStream.Create('c:\test.txt', fmCreate);
fs.WriteComponentRes(my.ClassName,my);
fs.free();
end;
//读取
procere TForm4.Button2Click(Sender: TObject);
var
my1: TMyClass;
ts: TStream;
begin
my1:=TMyClass.Create(self);//你少了这句...
ts:= TFileStream.Create('c:\test.txt',fmOpenRead);
ts.ReadComponentRes(my1);
try
showmessageFmt('名字:%s 年龄:%d 地址:%s',[my1.name,my1.age,my1.address]);
finally
ts.Free();
end;
end;
delphi 对象序列化保存到文件中,反序列化后出现乱码
首先,要确保你对象的成员写在published下。还有你读的代码少了创建TmyClass的实例了,所以会报错。我改了一下是可以的,代码如下://TmyClass定义 Type TMyClass=Class(TComponent)private Fage: Integer;Faddress: String;FName: String;published property Name:String Read FName Write FName;property...
哪位大虾来教教我delphi怎么保存组件属性啊?
这个叫做对象的持久化,序列化,串行化,都是一个意思,翻译不同而已下面2个函数,将对象以流的形式保存到string里或把string转换为对象。可以将转换后的string写入文件,需要时再读出来。类似的例子很多,搜一下”Delphi 持久化”或”Delphi 序列化”使用的前 注册下 RegisterClasses functionComponentToSt...
delphi 编程中,如何对TStringlist对象进行序列化和反序列化呢? 哪位大...
1、CommaText 2、Delimiter & DelimitedText 3、Names & Values & ValueFromIndex 先看第一个:CommaText。怎么用呢?用代码说话:const constr :String = 'aaa,bbb,ccc,ddd';var strs :TStrings;i :Integer;begin strs := TStringList.Create;strs.CommaText := constr;for i := 0 to Strs...
Delphi 如何用ObjectTextToBinary从INI文件读取图片
上面这一行语句将会为变量myinifile与具体的文件program.ini建立联系,然后,就可以通过变量myinifile,来读写program.ini文件中的关键字的值了。值得注意的是,如果括号中的文件名没有指明路径的话,那么这个Program.ini文件会存储在Windows目录中,把Program.ini文件存储在应用程序当前目录中的方法是:为其...
delphi的文件操作
这就是对象的封装特性。将对象的数据域封闭在对象的内部,使得外部程序必需而且只能使用正确的方法才能对要读写的数据域进行访问。封装性意味着数据和代码一起出现在同一结构中,如果需要的话,可以在数据周围砌上“围墙”,只有用对象类的方法才能在“围墙”...
j2ee中有哪几种远程调用协议,这几种通信效率从高到低分别是什么?_百度...
HttpInvoker是SpringFramework提供的JAVA远程调用方法,使用java的序列化机制处理对象的传输。从测试结果看,其效率还是可以的,与RMI基本持平。不过,它只能用于JAVA语言之间的通讯,而且,要求客户端和服务端都使用SPRING框架。另外,HttpInvoker 并没有经过实践的检验,目前还没有找到应用该协议的项目。6、...
开源RPC项目Apache Thrift
执行命令后,Thrift生成的源代码能够被多种语言的客户端和服务器直接使用。例如,生成的Java代码中,一个简单的Thrift文件可以自动转换为包含数百行代码的类文件,如`UserProfile.java`,包含UserProfile结构的完整实现。Thrift提供了丰富的序列化和反序列化功能,这在RPC(远程过程调用)和网络通信中尤为重要...
各种后缀名代表什么意思?
在DOS下最容易遇到的首先是可执行文件,后缀名有两类:*.exe、*.com(此处的*表示文件名任意),它们是由汇编语言或其它高级语言编出的程序经过编译后直接在DOS下运行的文件。有时由于软件功能多、内存偏小,不能一次性全部调入内存还可能有同文件名的ovl文件,如ws.exe、ws.ovl。另外还有一种文件可以直接运行,*....