我正在使用这种记录格式的打字文件:
KClientServerConfType = Record
HostName: String[255];
DatabaseName: String[200];
UserName: String[200];
Password: String[200];
end;
工作正常。但是为什么我可以使用GEdit读取文件的内容?我认识到乱码中的价值观。这是正常的还是不可读?
以下是要编写的代码:
AssignFile(ThisFile, 'clientserver.conf');
Rewrite(ThisFile);
Settings.HostName:= '192.168.100.100';
Settings.DatabaseName:= 'dbESM';
Settings.UserName:= 'itsols';
Settings.Password:= 'pass12d3';
Write(ThisFile, Settings);
CloseFile(ThisFile);
我在Ubuntu 12.04上使用Lazarus。
答案 0 :(得分:1)
如果FPC对短线的处理类似于Delphi,那么可能的原因是你所看到的包括每个字符串的长度字节(例如HostName [0]的值)和每个字符串的实际长度之间的随机数据字符串及其声明的长度,例如HostName [16] ... HostName [200]如果您的Settings变量是局部变量;如果它是一个局部变量,那么随机的东西就是变量之前的内存。
“该字段将根据数据进行调整”:(在Delphi中)如果您正在写入纯文本文件,但如果您使用的是“ClientServerConfType文件”,则会得到[0文件中的字节以及超出字符串动态长度的垃圾。
如果记录未声明为“已打包”,则文件中的记录字段之间可能存在额外的,可能是垃圾填充的填充。