0

我是一名大学生(英国),在我的 A2 计算项目中使用 delphi。我真的不是很先进所以请多多包涵!好的,所以我使用 TStringList 在加密后将 TMemoBox 的内容保存到文本文件中。但是,这是不可能的,因为 TStringList 在消息后显示了一个换行符,这会破坏加密。我关注了这篇文章,它同时使用了 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;
4

1 回答 1

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); 

我还想指出,正如我在许多其他场合所做的那样,加密是在二进制而不是文本上运行的。当然,如果您不尝试将文本视为二进制,反之亦然,那么您将不会遭受杂散换行文本的困扰。

于 2014-11-28T21:47:16.723 回答