как дописать символ в поток

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

rodnayastreet
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.04.2010 (Ср) 13:43

как дописать символ в поток

Сообщение rodnayastreet » 14.04.2010 (Ср) 14:23

Уважаемые гуру, помогите начинающему, а то я уже весь мозг сломал, пол дня убил, а решения не придумал.
Я получаю в ответ на свой запрос от удаленного сервера капчу - gif файл. Капча отображается в picturebox на моей форме с помощью
Код: Выделить всё
System.Drawing.Bitmap.FromStream(myHttpWebResponse.GetResponseStream)

Админ удаленного ресурса поменял капчу, и моя софтина перестала отображать рисунок, хотя браузеры при заходе на сайт продолжают отображать рисунок нормально. Сохранил файл с капчей на диск и стал разбираться: стандартная программа просмотра изображений открыть его не смогла. Стал разбирать файл по байтам и увидел, что в конце файла не хватает байта "3B" ( символ ";"), обозначающего конец gif файла. При добавлении этого кусочка вручную все проблемы исчезают. То есть, что бы мой софт снова заработал, можно, конечно, сохранять каждый раз капчу на диск в gif, затем дописывать в конец символ ";" и отображать измененный файл в picturebox, а после этого удалять временный файл. Очень убогое решение, но моих знаний и навыков хватает только на него, ибо с потоками работать еще не умею. :oops:
Помогите, пожалуйста, написать код, который размещал бы полученный от сервера поток в памяти и добавлял бы в конец потока байт "3B".
А уж в picturebox я его зафигачу уже известным мне способом: Bitmap.FromStream.
Спасибо.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: как дописать символ в поток

Сообщение MIT » 14.04.2010 (Ср) 14:44

Писать за тебя код не буду, но дам инструкцию.

1) Создаем MemoryStream
2) Пишем в него данные из myHttpWebResponse.GetResponseStream (способов куча)
3) Дописываем необходимые данные (можно MemoryStream.Write, MemoryStream.WriteByte или использовать BinaryWriter`ы)
4) Переместить текущую позицию в MemoryStream`е на 0 (это важно!)
5) Вызвать System.Drawing.Bitmap.FromStream
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

rodnayastreet
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.04.2010 (Ср) 13:43

Re: как дописать символ в поток

Сообщение rodnayastreet » 14.04.2010 (Ср) 15:11

MIT писал(а):2) Пишем в него данные из myHttpWebResponse.GetResponseStream (способов куча)

Я вначале двигался в ту же сторону, но не смог присвоить значение Net.ConnectStream в IO.MemoryStream - возникала ошибка. Подскажи один из "кучи" способов, буду очень благодарен.
MIT писал(а):4) Переместить текущую позицию в MemoryStream`е на 0 (это важно!)

Спасибо, до этого бы точно не допер.

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: как дописать символ в поток

Сообщение MIT » 14.04.2010 (Ср) 15:17

rodnayastreet писал(а):Подскажи один из "кучи" способов
Ну, например, можно сделать myHttpWebResponse.GetResponseStream.CopyTo(...)
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

rodnayastreet
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.04.2010 (Ср) 13:43

Re: как дописать символ в поток

Сообщение rodnayastreet » 14.04.2010 (Ср) 15:22

MIT писал(а):можно сделать myHttpWebResponse.GetResponseStream.CopyTo(...)

Или я совсем туплю, или у GetResponseStream нет такого метода, как CopyTo

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: как дописать символ в поток

Сообщение MIT » 14.04.2010 (Ср) 15:58

Ну может, может, я ж тебе не справочник :)
В любом случае Гугл спасёт человечество: http://www.nonhostile.com/howto-copy-st ... vb-net.asp
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

rodnayastreet
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.04.2010 (Ср) 13:43

Re: как дописать символ в поток

Сообщение rodnayastreet » 14.04.2010 (Ср) 16:23

MIT писал(а):Ну может, может, я ж тебе не справочник :)
В любом случае Гугл спасёт человечество: http://www.nonhostile.com/howto-copy-st ... vb-net.asp


Большое спасибо за помощь товарищам MIT`у и Гуглу. Вопрос снят.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList