gpt4 book ai didi

delphi - 如何删除由Delphi 7中的EncodeString函数编码的字符串中的换行符?

转载 作者:行者123 更新时间:2023-12-02 03:46:09 25 4
gpt4 key购买 nike

我正在 Delphi 7 中使用 EncodeString 对从源文本文件加载的字符串进行编码。在源文本文件中,每一行都是一条记录。现在,我想使用 EncodeString 函数(Base64 函数)对每一行字符串进行编码并写入新的目标文本文件。我的目的是源文本文件中的一行字符串应编码为目标文本文件中的一行加密字符串。但每行编码为 3 行加密字符串。 3 行中有多个换行符。如何删除换行符?

代码:

procedure TForm1.Button1Click(Sender: TObject);
var
i,sum:integer;
begin
memoSource.Lines.LoadFromFile('source.txt');
sum:=memoSource.Lines.Count;
assignFile(targetFile,'target.txt');
rewrite(targetFile);
memoTarget.Clear;

for i:=0 to sum-1 do
begin
memoTarget.Lines.Append(EncodeString(memoSource.Lines.Strings[i]));
Writeln(targetFile,EncodeString(memoSource.Lines.Strings[i]));
//Write(targetFile,EncodeString(memoSource.Lines.Strings[i])); //use write but line-feed still in the strings
end;

end;

这是源文本内容:

line 1: this is a soure text to test , every line is one record. this is a soure text to test , every line is one record. this is a soure text to test , every line is one record.
line 2: this is a soure text to test , every line is one record. this is a soure text to test , every line is one record. this is a soure text to test , every line is one record.
line 3: this is a soure text to test , every line is one record. this is a soure text to test , every line is one record. this is a soure text to test , every line is one record. code here

这是EncodeString文本内容:

bGluZSAxOiB0aGlzIGlzIGEgc291cmUgdGV4dCB0byB0ZXN0ICwgZXZlcnkgbGluZSBpcyBvbmUg
cmVjb3JkLiB0aGlzIGlzIGEgc291cmUgdGV4dCB0byB0ZXN0ICwgZXZlcnkgbGluZSBpcyBvbmUg
cmVjb3JkLiB0aGlzIGlzIGEgc291cmUgdGV4dCB0byB0ZXN0ICwgZXZlcnkgbGluZSBpcyBvbmUg
cmVjb3JkLg==
bGluZSAyOiB0aGlzIGlzIGEgc291cmUgdGV4dCB0byB0ZXN0ICwgZXZlcnkgbGluZSBpcyBvbmUg
cmVjb3JkLiB0aGlzIGlzIGEgc291cmUgdGV4dCB0byB0ZXN0ICwgZXZlcnkgbGluZSBpcyBvbmUg
cmVjb3JkLiB0aGlzIGlzIGEgc291cmUgdGV4dCB0byB0ZXN0ICwgZXZlcnkgbGluZSBpcyBvbmUg
cmVjb3JkLg==
bGluZSAzOiB0aGlzIGlzIGEgc291cmUgdGV4dCB0byB0ZXN0ICwgZXZlcnkgbGluZSBpcyBvbmUg
cmVjb3JkLiB0aGlzIGlzIGEgc291cmUgdGV4dCB0byB0ZXN0ICwgZXZlcnkgbGluZS

我需要在每个目标文本文件行尾有一个换行符,以便我可以区分每一行。

非常感谢!

最佳答案

最便宜的方法是使用StringReplace

str := StringReplace(str, sLinebreak, '', [rfReplaceAll]);

如果您想从源代码中删除换行符,您可以修改编码器的源代码。找到添加换行符的部分,并将其删除。

这是对您问题的天真直接回答。一个更具冒险性的答案是,您应该一次性对整个字符串列表、换行符等进行编码。不要逐行编码,而是编码 memoSource.Lines.Text

人们还想知道为什么选择对文本进行 Base64 编码。我希望看到使用 base64 将二进制转换为文本,以便通过仅接受 ASCII 文本的管道进行传输。如果您已经有文本,为什么要对其进行 Base 64 编码?

关于delphi - 如何删除由Delphi 7中的EncodeString函数编码的字符串中的换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22487059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com