Я учусь в колледже (Великобритания) и использую 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;
TStringList.Add
добавляет строку, что означает, что он добавит EOL к аргументу и добавит полученную вещь в объект списка строк. Вместо этого вы можете попробоватьEmailText.Text := EmailMessageMemo.Text;
, который, насколько мне известно, должен копировать содержимое дословно. - person Andriy M   schedule 29.11.2014TStrings
имеет собственное свойствоLineBreak
, поэтому этот код должен использоватьLength(EmailText.LineBreak)
вместоLength(System.sLineBreak)
. Но это зависит от того, чтоLineBreak
всегда кодирует 8-битные значения без суррогатов. Вместо этого более точным подходом было бы использованиеEmailText.Encoding.GetByteCount(EmailText.LineBreak)
. - person Remy Lebeau   schedule 29.11.2014