Форум: "Сети";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];
ВнизКак сохранить сообщения 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c