Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.24;
Скачать: CL | DM;

Вниз

Как сохранить сообщения TIdMessage.   Найти похожие ветки 

 
Nesterovsky   (2003-05-18 09:49) [0]

Как можно сохранить несколько сообщений TIdMessage в одном потоке. Делаю так:
var
msgin: array of TIdMessage;
msgout:array of TIdMessage;
begin
... //тут заполняю массив msgin сообщениями
fs:= TFileStream.Create("c:\t.tt", fmCreate);
for i:= Low(msgsin) to High(msgsin) do
msgsin[i].SaveToStream(fs);
fs.Position:= 0;

for i:= Low(Folders[outbox].Msgs) to High(Folders[outbox].Msgs) do
begin
SetLength(msgout, Length(msgout) + 1);
msgout[High(msgout)]:= TIdMessage.Create(nil);
msgout[High(msgout)].Clear;
msgout[High(msgout)].LoadFromStream(fs);
end;
end;
//но как на зло, когда я читаю из того же потока несколько сообщений, то читается только первое и указатель потока ставится в конец :(( Хотя должен стать на разделителе


 
Zelius ©   (2003-05-18 20:34) [1]

Тебе надо потрассировать Инди, они очень любят играть с потоками по своим правилам! Наверняка где-то в коде Инди стоит изменение позиции в потоке.


 
Nesterovsky   (2003-05-18 21:58) [2]

А-а-а-а-а попроще ничего нет? у меня конечно был вариант еще в этот же стрим сохранять и позицию следующего сообщения, а при чтении восстанавлитьвать его на каждое сообщение, но уж очень это как то не красиво


 
Nesterovsky   (2003-05-18 23:46) [3]

Похоже действительно ошибка в индевых компонентах. Позиция в стреаме сдвигается на размер буффера, а не на размер прочитанных данных. Ищется за полчаса фиксится за минуту. Кому интересно - пишите.


 
Zelius ©   (2003-05-19 11:22) [4]

Таких мест прилично в Инди, чем она мне и не нравится, пришлось даже свой поток писать, что бы Инди не меняла размер файла как ей захочется.



Страницы: 1 вся ветка

Текущий архив: 2003.07.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
3-77795
rosl
2003-07-03 04:51
2003.07.24
запрос в Query


3-77759
Zigs
2003-06-30 13:22
2003.07.24
Уважаемые мастера, можно можно ли в TDBText отображать несколько


4-78201
DVM
2003-05-22 14:00
2003.07.24
Помогите найти ошибку в функции!


6-78031
Chris
2003-05-16 20:02
2003.07.24
Как узнать маршрут между хостами в локальной сети?


14-78057
Andryk
2003-07-09 15:22
2003.07.24
Письмо Пьера Безухова :о)))