一个TStringList的问题

dawnhorizon 2003-10-03 07:32:27
我在用TStringList处理文件时遇到了问题:
我先把一个String经过加密写入到文件中,然后再用TStringList读出,解密,却出现了错误:本来一个string被读出时成了两个string,解密出来的也不是原来的字符串了:(
经测试,单纯的加密解密函数没有问题,大家说问题会出在哪里?

下面是我得加密解密函数,应该没什么问题吧?
{
加解密函数,key是秘钥,SeedA和SeedB是种子.bEncrypt为true的时候加密,false解密.
}
function Crypt(const s: string; Key: Word; const bEncrypt: boolean = True): string;
var
i: integer;
ps, pr: ^byte;
begin
SetLength(Result, Length(s));
ps := @s[1];
pr := @Result[1];
for i := 1 to length(s) do
begin
pr^ := ps^ xor (Key shr 8);
if bEncrypt then
Key := (pr^ + Key) * SeedA + SeedB
else
Key := (ps^ + Key) * SeedA + SeedB;
pr := pointer(integer(pr) + 1);
ps := pointer(integer(ps) + 1);
end
end;
...全文
22 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
siwuge 2003-10-03
  • 打赏
  • 举报
回复
ip学习
dawnhorizon 2003-10-03
  • 打赏
  • 举报
回复
我也怀疑是加密的时候有分隔符出现。问题是我不知道TStringList的分割符有哪些,该怎么避免呢?
huojiehai 2003-10-03
  • 打赏
  • 举报
回复
加密后可能是有#13#10这类的字符,当然会分两个String啦
你取Stringlist.text的内容就对了,不要用Stringlist[0], Stringlist[1]之类取
zhoutian618 2003-10-03
  • 打赏
  • 举报
回复
我现在没有DELPHI,我没有仔细测试。

但是可以提醒你一句。
写入文件中,再读到TSTRINGLIST中,
如果你的一行字符中有逗号或空格时会被分成两段,
在TSTRINGLIST中也分成两个节点来的。

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧