Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > TidMessage и FileStream


Автор: Aig 30.3.2010, 09:11
Есть проблема.
Записываю полученные письма в файл:
(пример)
Код

var
  intI :integer;
  Stream: TFileStream;
begin
  Stream := TFileStream.Create('d:\test2.dat', fmCreate);
  for intI := 1 to FMsgCount do
  begin
    idmes1.Clear;
    Application.ProcessMessages;
    POP.Retrieve(intI, idMes1); //читать с сервера
    idMes1.SaveToStream(stream,false);
  end;
  stream.Free;
end;


В другой момент времени считываю записанные сообщения из этого файла:
Код

Stream := TFileStream.Create('d:\test2.dat', fmOpenRead);
while (Stream.Position < Stream.Size) do
begin
  Msg1.Clear;
  msg1.LoadFromStream(stream,false);
  // фаза отображения.....
end;
stream.Free;


Проблема в том, что считывается только одно (первое) сообщение (записывалось несколько). При этом Stream.Position = Stream.Size.
В файле все письма есть, разделитель (CR.CR) тоже.
В чем проблема и как ее решить?

Автор: Snowy 30.3.2010, 11:17
Нужно считывать вручную все письма по одному в промежуточный TMemoryStream
и уже из этого стрима загружать каждое письмо в msg.
Загрузка письма расчитана только на одно письмо в стриме.
Поэтому нужно их разделить вручную.

Автор: Aig 30.3.2010, 11:51
Спасибо, попробую.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)