Delphi: TFileStream & TStringList сохраняя пустой текстовый файл
Я студент колледжа (Великобритания), использующий Delphi для моего проекта A2 Computing. Я действительно не очень продвинутый, поэтому, пожалуйста, потерпите меня! Итак, я использую 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;
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);
Я также хотел бы отметить, что, как я уже делал во многих других случаях, шифрование работает не с текстом, а с двоичным кодом. Конечно, если бы вы не пытались обрабатывать текст как двоичный, и наоборот, вы не пострадали бы от разбитого текста.