我是一名大学生(英国),使用delphi参加我的A2计算项目。我真的不是很先进所以请耐心等待!好的,所以我在使用TStringList加密后将TMemoBox的内容保存到文本文件中。但是,由于TStringList显示在消息加密后显示换行符,因此这是不可能的。我跟着this文章,它使用TStringList和TFIleStream来删除它,但不是给我一个完整的文本文件,结果是空的。请问您能帮助保存数据而不是存储数据吗?非常感谢。这是我程序的一部分。
var
EmailText : TStringList;
FileStream : TFileStream;
begin
FileName := 'email1.txt';
EmailText := TStringList.Create;
FileStream := TFileStream.Create(Filename, fmCreate);
EmailText.SaveToStream(FileStream, EmailText.Encoding);
FileStream.Size := FileStream.Size - Length(System.sLineBreak);
EmailText.Add(EmailMessageMemo.Text);
FileStream.Free;
EmailText.Free;
答案 0 :(得分:1)
EmailText := TStringList.Create; // new string list, empty
FileStream := TFileStream.Create(Filename, fmCreate);
EmailText.SaveToStream(FileStream, EmailText.Encoding);
因此您已将空字符串列表保存到文件中。因此,您的文件为空,因为您的字符串列表为空。
我猜你打算在保存之前将内容添加到字符串列表中。
EmailText := TStringList.Create;
EmailText.AddStrings(EmailMessageMemo.Lines);
FileStream := TFileStream.Create(Filename, fmCreate);
EmailText.SaveToStream(FileStream, EmailText.Encoding);
额外的字符串列表是不必要的。你可以这样做:
FileStream := TFileStream.Create(Filename, fmCreate);
EmailMessageMemo.Lines.SaveToStream(FileStream, TEncoding.Default);
我还想指出,正如我在很多其他场合所做的那样,加密操作是以二进制而不是文本。当然,如果你不是试图将文本视为二进制,反之亦然,那么你就不会受到杂散换行文本的影响。