Главная страница
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.02 c
14-78133
MetalFan
2003-07-09 09:56
2003.07.24
рисование блок-схем


7-78180
MGA
2003-05-05 13:34
2003.07.24
Как отключить Ctrl+Alt+Del в WinXP


14-78091
1380
2003-07-08 10:02
2003.07.24
BDE Delphi


3-77729
rh
2003-07-01 07:44
2003.07.24
Как подключиться к БД Oracle?


1-77842
captive
2003-07-11 15:26
2003.07.24
Помогите с формами разобраться..