德尔福:TFileStream& TStringList保存空白文本文件

时间:2014-11-28 21:27:49

标签: file delphi text tstringlist tfilestream

我是一名大学生(英国),使用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;

1 个答案:

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

我还想指出,正如我在很多其他场合所做的那样,加密操作是以二进制而不是文本。当然,如果你不是试图将文本视为二进制,反之亦然,那么你就不会受到杂散换行文本的影响。