Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2011, 08:18   #1
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию Синапс Tstream

Всем здравствуйте.
У меня в делфи есть примерно такой код:
Код:
HTTP.Document.SaveToStream(p5);
Далее для чего мне и нужен стрим:
Код:
Memo1.Lines.LoadFromStream(p5);
Могу ошибаться потому что пишу код на память.
Обьявление переменной идет так:
Код:
...
var
p5: Tstream;
begin
...
Не выполняется такой метод кода. Но очень хочется загрузить документ из сети для парсинга напрямую в мемо так как использовать сохранение вначале в файл а потом его загрузка слишком не удобный процесс.
Я думаю что не правильно обьявляю переменную p5 но в чем ошибка? Вроде правильно...
Зод вне форума Ответить с цитированием
Старый 25.11.2011, 09:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var p5: TMemoryStream;
...
p5:=TMemoryStream.Create;
... тут с ним работаем
p5.Free;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2011, 10:10   #3
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

Код:
  HTTP.Document.SaveToStream(p5);
  Memo1.Lines.LoadFromStream(p5);
Вот так делаю + то что написано выше. Мемо все равно пустое в итоге хотя при сохранении через файл все работает..
Зод вне форума Ответить с цитированием
Старый 25.11.2011, 10:16   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
p5.Seek(0, soFromBeginning);
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 25.11.2011, 10:19   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Попробуйте еще перед записью в Memo Stream.Position в 0 установить. Бывают такие грабли
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 25.11.2011, 10:20   #6
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

эм, а зачем извращения с TStream? Не проще сразу?:
Код:
Memo1.Lines.LoadFromStream(HTTP.Document)
Просто у синапса Document:TStream

Насчет предварительного перемещения - все верно, можно проверить через свойство Position. Только все равно не понятно зачем использовать промежуточный TStream

Цитата:
хотя при сохранении через файл все работает
Естественно. Ведь перед загрузкой закрываете поток? В таком случае указатель при открытии автоматом ставится на начало.
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно

Последний раз редактировалось Mifody; 25.11.2011 в 10:23.
Mifody вне форума Ответить с цитированием
Старый 25.11.2011, 10:33   #7
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

Сделал сразу загрузку в Мемо, заработало. Но вот ради собственного интереса и саморазвития почему так? Что я делал с промежуточным не так?

Последний раз редактировалось mihali4; 28.11.2011 в 03:30.
Зод вне форума Ответить с цитированием
Старый 25.11.2011, 10:58   #8
Mifody
Форумчанин
 
Регистрация: 12.02.2009
Сообщений: 215
По умолчанию

Так Вам уже писали: p5.Seek(0, soFromBeginning) надо было сделать предварительно.

Просто принцип такой: когда пишите в поток, указатель перемещается. Так что получается, после Вашей записи, указатель стоит в конце. Чтение, соответственно, происходит с позиции указателя, т.е. с конца потока и далее .
Помог с вопросом - тыркаем в весы, Вам не сложно, а мне приятно
Mifody вне форума Ответить с цитированием
Старый 25.11.2011, 11:11   #9
Зод
Форумчанин
 
Регистрация: 25.08.2011
Сообщений: 140
По умолчанию

Спасибо. Запомню)
Зод вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Синапс+Яваскрипты Зод Работа с сетью в Delphi 0 12.10.2011 09:40
Синапс userAgent Зод Работа с сетью в Delphi 3 07.10.2011 16:25
Загрузка рисунка из TStream cargo29 Мультимедиа в Delphi 17 12.07.2011 13:57
Array Of Byte -> TStream KiL0z Общие вопросы Delphi 9 18.06.2011 20:17
TStream Владимир1988 Помощь студентам 2 17.12.2009 10:16