Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.02.2008, 02:05
LeNiN Dee LeNiN Dee вне форума
Прохожий
 
Регистрация: 21.02.2008
Адрес: Україна Харків
Сообщения: 7
Репутация: 10
Вопрос Вопрос по поводу потоков

В програме TMemoryStream используется для хранения програмно созданого масива TImage и записи/загрузки его в файл. При загрузке элементов из файла в поток незнаю как опредилить количество элементов в потоке, а когда выходит за последний элемент в потоке пишет ошибку:
Project Project.exe raised exception class EReadError with massage "Invelid stream format". Process stopped. Use Step pr Run to Continue.
Как можно выйти из положения? может не тот клас выбрал для потока?
Ответить с цитированием
  #2  
Старый 22.02.2008, 11:59
Аватар для XIO
XIO XIO вне форума
Новичок
 
Регистрация: 06.12.2007
Сообщения: 77
Репутация: 32
По умолчанию

Можно как вариант, воспользоваться Try ..Except.. end;
Когда ловится исключение выходить из цикла записи/чтения.

Код:
Try
//Ваш код
Except
//Можно ещё определить тип ошибки, как  это сделать точно не помню.
//Если тип ошибки тот что вы описали ниже тогда
break;
end;
__________________
"Люди никогда не видят то, существование чего им кажется невозможным." ©Терри Пратчетт
Ответить с цитированием
  #3  
Старый 22.02.2008, 21:40
LeNiN Dee LeNiN Dee вне форума
Прохожий
 
Регистрация: 21.02.2008
Адрес: Україна Харків
Сообщения: 7
Репутация: 10
Стрелка

Цитата:
Сообщение от XIO
Можно как вариант, воспользоваться Try ..Except.. end;
Когда ловится исключение выходить из цикла записи/чтения.
Данная конструкция непомогла я даже нашол вылавливание ошыбки
Код:
 on EInvalidImage do
только почему-то ошыбку он не поймал поменялся только клас ошибки на EInvalidImage

Последний раз редактировалось LeNiN Dee, 22.02.2008 в 21:48.
Ответить с цитированием
  #4  
Старый 23.02.2008, 10:09
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Может стоит воспользоваться свойствами TMemoryStream
такими как Size и Position ?(нарисовал бы кусочек кода где ошибка чтоб понятней было)
Ответить с цитированием
  #5  
Старый 23.02.2008, 15:49
LeNiN Dee LeNiN Dee вне форума
Прохожий
 
Регистрация: 21.02.2008
Адрес: Україна Харків
Сообщения: 7
Репутация: 10
Лампочка

Цитата:
Сообщение от s0Creator
Может стоит воспользоваться свойствами TMemoryStream
такими как Size и Position ?(нарисовал бы кусочек кода где ошибка чтоб понятней было)

Спасибо за идею надо всеволишь сравнить Position и Size.
Код:
while Stream_.Position<Stream_.Size do
begin
//обработка
end;
__________________
"Все гениальное - просто" (А. Эйнштейн)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:36.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter