Error reading imagelist bitmap failed to read imagelist data from stream

Error reading imagelist bitmap failed to read imagelist data from stream

Уважаемые мастера, не дайте помереть! Использую в программе ImageList уже три года с обычными .bmp картинками на 16 цветов. Пока работал на D5 — все было как в сказке, пока не пересел на D7. И вот тут началось.
При установке программы на Win95 выдает «Недопустимую ошибку» (Exception EReadError in module Proga.exe at 00024B4F. Error reading ImageList.Bitmap: Failed to read ImageList data from stream.) Причем, на некоторых машинах с Win95 все это работает, а на некоторых — нет (программа работает более чем на пол-сотни самых разнообразных компьютерах с различными ОС). Если убрать из программы ImageList, то все работает замечательно.
Пробовал сравнивать версии винды, комплект установленных компонент, BIOS — не помогает!
Люди, подскажите: кто глючит: Я, Win95 или D7 ?


Германн ( 2003-07-22 01:56 ) [1]

Есть мнение, что может влиять версия comctl32.dll. Именно в ней осуществляется работа с ImageList. На W95 следует поставить версию из W98. Может быть поможет. По крайней мере проблемы с картинками в ToolBar решались таким образом. Хотя причем тут переход с D5 на D7 я не понимаю.


Крот ( 2003-07-22 09:43 ) [2]

Я думаю Герман прав, это comctl32.dll сошла с ума. Чтобы твоя программа работала на любых виндах, предлагаю сделать так:

Все картинки, которые раньше были в ImageList поместить в ресурсы и, когда программа стартует, руками грузить их в ImageList, у него даже есть подходящая ф-ция TImageList.ResourceLoad. У меня были похожме проблемы, я вот так их решил.


Romkin ( 2003-07-22 11:46 ) [3]

IE надо установить. Версии 5-6 эдак.
И все будет :-))


Anatoly Podgoretsky ( 2003-07-22 11:56 ) [4]

Точно, а не пытаться менять хакерскими методами библиотеки.

Про IE — спасибо. Обязательно попробую.
Маленькое уточнение к вопросу: Ошибка выползает даже в том случае, если ImageList пуст!


Толик ( 2003-07-23 11:22 ) [6]

Такоие проблемы (причём не только с TImageList, а с любыми компанентами вкладки Win32) наблюдаются на Win95

Источник

Error reading imagelist bitmap failed to read imagelist data from stream

Всем доброго времени суток!

Моя Дельфи глючит — не могу использовать ImageList! Если кинуть его на форму и поставить какой-нибудь битмап ему, то при запуске программы вылетает эксепшин «Error reading ImageList1.Bitmap: Failed to read ImageList data from stream». В чём дело? Стоит Д6 UpdatePack 2.

ЗЫ: И под ХР она мне пишет что у меня Win 2000 SP1 🙂


Yuri Btr ( 2004-01-20 21:02 ) [1]

А, вот . 🙂
Наконец то и у кого то появилась такая проблема. Я довольно долго пытался решить такую проблему сам, ведь мастера оказались бессильны. Глюк сей также появляется при переносе откомпилированной программы с ImageList на другую машину (независимо от операционки) — и тоже не может прочитать «data from stream» Но иногда на машине где компилировалась — программа запускается !
(WinXP, Delphi 6 любой версии)


шел мимо ( 2004-01-20 21:59 ) [2]

Думаю, что дело в криво поставленной операционке(или в криво взломанной пиратами :-))
(comctl32.dll)


Yuri Btr ( 2004-01-20 22:05 ) [3]

to шел мимо
Интересно что значит по вашему
>криво взломанной пиратами
Пираты сидят и переписывают под себя comctl32.dll
специально для того чтобы у бедных несчастных юзеров не работал ImageList ?
(тоже касается и криво поставленной операционки)

Читайте также:  Error 6012 sp flash tool


SPeller ( 2004-01-21 04:50 ) [4]

Ну то что я не один тоже радует 🙂


> Думаю, что дело в криво поставленной операционке(или в криво
> взломанной пиратами :-))
> (comctl32.dll)

Я так понимаю, что в следующий раз вы посоветуете переустановить винду когда прога начнёт ZeroDivide выдавать. Это всё винда! Это она, злющаяя, жить вам мешает и все беды приносит, отродие адское!!


> шел мимо

Под МЕ такая же хрень, так что дело определённо в Дельфи.

Кстати, может быть это результат обновления RTL ?


Dmitriy O. ( 2004-01-21 07:35 ) [6]

Надо использовать Имажелист из библиотеки компанентов DelphiX
гораздо удобнее много больше функций и без подобных глюков.


Cobalt ( 2004-01-21 09:58 ) [7]

Ну чтож, раз уж есть устойчивость проявления — пишите баг репорт в Борланд, тов. Орлику.


Style ( 2004-01-21 10:30 ) [8]

comctl32.dll —
Попробуйте ради интереса переставте IE?? или обновите его?
Обычно там эта библиотека.


KSergey ( 2004-01-21 10:59 ) [9]

> [7] Cobalt © (21.01.04 09:58)
> Ну чтож, раз уж есть устойчивость проявления — пишите баг
> репорт в Борланд, тов. Орлику.

Только не забудьте сообщить ему ваш геристрационный номер 😉


> Style © (21.01.04 10:30) [8]

Я ж объясняю — в МЕ и в ХР одиноково проявляется, поэтому comctl32 тут ни при чём.

Раньше у меня такого небыло. Недавно переустанавливал Дельфи, и, возможно, в процессе установки обновлений что-то не так случилось. Кстати, вопрос: Нужно ли устанавливать все обновления по очереди (1, потом 2) или достаточно сразу поставить последнее?


> Ну чтож, раз уж есть устойчивость проявления — пишите баг
> репорт в Борланд, тов. Орлику.

Нужно ещё выявить закономерность проявления — т.е. при каких условиях это случается.

Источник

Error reading imagelist bitmap failed to read imagelist data from stream

Что за ерунда происходит:
под 2003/ХР программа нормально работает, а под 2000/98 при запуске ругается:

Error reading ImageList1->Bitmap: Failed to read ImageList data from stream.

От: ironwit
Дата: 06.02.04 08:28
Оценка:

Здравствуйте, Shershen, Вы писали:

S>Что за ерунда происходит:
S>под 2003/ХР программа нормально работает, а под 2000/98 при запуске ругается:

S>Error reading ImageList1->Bitmap: Failed to read ImageList data from stream.

S>

S>C++Builder6.

S>??

программа твоя? Если да, то в каком месте падает? Если нет то filemon — что она делает в данный момент, хотя.

От: Sinclair http://corp.ingrammicro.com/Solutions/Cloud.aspx
Дата: 06.02.04 09:28
Оценка:
От: Arioch
Дата: 06.02.04 10:07
Оценка:

The stars so gaily glistened. (Fri, 06 Feb 2004 08:28:31 GMT @394)
. while the fading voice of ironwit whispered through the darkness:

i> программа твоя? Если да, то в каком месте падает?

тогда Use Debug DCUs и под IDE прогнать в какомместе конкретно спотыкается.
Если IDE нету — то JCL Exception dialog и MAP-файлы.

i> Если нет то filemon — что она делает в данный момент, хотя.
DFM-ресурс читает, толку от filemon

Delphi 5 падает при чтении TrouColot BMP в TBitBtn.Glyph
Причем сохранять запросто, а читать никак.

Я кк чему? ты скажи, что там за картинка лежит? М.б. ее старые винды не
переваривают просто?
Или там BMP cо сжатием внутреннним, RLE или какой JPG ,

Источник

Error reading imagelist bitmap failed to read imagelist data from stream

Что за ерунда происходит:
под 2003/ХР программа нормально работает, а под 2000/98 при запуске ругается:

Error reading ImageList1->Bitmap: Failed to read ImageList data from stream.

От: ironwit
Дата: 06.02.04 08:28
Оценка:

Здравствуйте, Shershen, Вы писали:

S>Что за ерунда происходит:
S>под 2003/ХР программа нормально работает, а под 2000/98 при запуске ругается:

Читайте также:  Ошибка glfw error 65542 wgl

S>Error reading ImageList1->Bitmap: Failed to read ImageList data from stream.

S>

S>C++Builder6.

S>??

программа твоя? Если да, то в каком месте падает? Если нет то filemon — что она делает в данный момент, хотя.

От: Sinclair http://corp.ingrammicro.com/Solutions/Cloud.aspx
Дата: 06.02.04 09:28
Оценка:
От: Arioch
Дата: 06.02.04 10:07
Оценка:

The stars so gaily glistened. (Fri, 06 Feb 2004 08:28:31 GMT @394)
. while the fading voice of ironwit whispered through the darkness:

i> программа твоя? Если да, то в каком месте падает?

тогда Use Debug DCUs и под IDE прогнать в какомместе конкретно спотыкается.
Если IDE нету — то JCL Exception dialog и MAP-файлы.

i> Если нет то filemon — что она делает в данный момент, хотя.
DFM-ресурс читает, толку от filemon

Delphi 5 падает при чтении TrouColot BMP в TBitBtn.Glyph
Причем сохранять запросто, а читать никак.

Я кк чему? ты скажи, что там за картинка лежит? М.б. ее старые винды не
переваривают просто?
Или там BMP cо сжатием внутреннним, RLE или какой JPG ,

Источник

Ошибка чтения TImageList в Win7 (проблема с ComCtl32?) — как / почему это может произойти?

Мне нужны идеи, как отследить / решить эту проблему:

У меня есть потенциальный клиент, который заявляет, что в 32-битной Windows 7 мое программное обеспечение выдает следующую ошибку:

imagelist Failed to read ImageList data from stream

Лицо предоставило дополнительную информацию:

  • Программа действительно работает с включенной темой Areo
  • Программа выдает ошибку на классической теме
  • IE 11 установлен
  • Человек сообщает о наличии как 5.82.7601.18837 comctl32.dll в папке system32, так и 6.10.7601.23039 comctl32.dll в папке Winsxs

(Небольшое примечание для тех, кто не в курсе — поскольку WinXP обе версии поставляются по умолчанию)

Исполняемый файл построен с использованием XE4 в тематической Windows 10 и работает как минимум (собственное тестирование)

  • win10 / 32 бит
  • win10 / 64бит
  • WinXP / 32-битная / классическая тема
  • HyperV-Virtual-Win7-SP1 / 32-битная / классическая тема / 16-битный цвет

Мой список TImagelist установлен на «cdDeviceDependent» (что соответствует ILC_COLORDDB)

Это мой манифест, извлеченный из моего исполняемого файла с помощью проводника ресурсов:

СДЕЛАТЬ

Я заметил в документации, что для ImageList_WriteEx указано: «Вы не должны создавать список изображений, который записан с флагом ILP_DOWNLEVEL с ILC_COLOR32» .

Я не уверен, что происходит при компиляции в 32-битной цветовой системе с использованием «ILC_COLORDDB» в качестве значения?

Я думал / было то, что ILP_DOWNLEVEL можно было бы игнорировать . И, следовательно, более вероятно, что он потерпит неудачу при чтении 5.x ComCtl32? Но мне не удалось найти в Интернете описанных подобных случаев, но .

Также похоже, что мой исполняемый файл работает с виртуальной конфигурацией Win7-SP1-32bit-16color-classic-themes .

СДЕЛАТЬ

Отправьте средство отладки для получения / подтверждения версии действительный, загруженной в comctl32.dll

ПЫТАЛСЯ

Я попытался указать пользователю на старую версию с манифестом без раздела ** совместимости. Это не имело никакого значения.

Можете ли вы проверить, действительно ли V6 из ComCtl32.dll доступен в этой системе Win 7?

Кроме того, IIRC также переключает Win 7 на классическую тему, может иметь такой же эффект.

— (1) — Мне нужно будет найти инструкции для пользователя о том, как он может проверить (или мне нужно написать / найти утилиту, которая делает это), поскольку у меня нет доступа к компьютеру — (2) — Я только что спросил об этом пользователя. Однако меня озадачивает, почему моя программа Delphi не запускается в Windows с использованием классической темы . Неправильно ли я настроил файл манифеста? (Я считаю, что ComCtl32 влияет на сохранение / загрузку данных потока, но даже в этом случае)

Что терпит неудачу, так это это. К сожалению, это ничего не говорит о том, почему это не удается.

Просто небольшое примечание — клиент ответил, что он использует «Классическую тему» ​​(я прошу его попробовать использовать, например, Aero, чтобы подтвердить, что это причина) . Но это будет означать, что система пользователей при использовании классической темы использует очень старая версия ComCtl32, не так ли? Из моего чтения проблема чтения списка изображений возникает только в том случае, если Delphi использует ComCtrl32 6.x при сохранении данных DFM / imagelist, а затем программа загружает данные DFM / imagelist с помощью ComcTL32 —

Читайте также:  Http error code no content

Начни откуда-нибудь. Отправьте исполняемый файл с тем же манифестом и списком изображений, который извлекает версию ( @GetDllVersion := GetProcAddress(LoadLibrary(comctl32), ‘DllGetVersion’ . ).

Я сделаю это. Для «раунда 1» я попросил клиента проверить более раннюю версию, где в файле манифеста нет раздела совместимости —

Поцарапайте это — не явная проблема. Старая версия тоже не работала.

На моем компьютере с Windows 7 установлена ​​только версия ComCtl32 5.82. Конечно, на моем компьютере установлены не все обновления Windows, так как у меня отключено автоматическое обновление Windows.

@SilverWarior Вы уверены, что у вас его нет в WinSxS? V6 уже был частью ванильных дистрибутивов WindowsXP . (но вы найдете его в папке WinSxS) Насколько я понимаю, приложения Delphi должны по-прежнему работать нормально, поскольку, если приложение запрашивает V6 в манифесте, а его нет, будет использоваться V5 вместо. Но совсем не повезло с потоковой передачей изображений . Но тогда должны быть другие разработчики Delphi, которые столкнулись с этим.

Что сказал @SertacAkyuz. Вам необходимо проверить версию comctl32 DLL. Вполне возможно, что IDE Delphi сохранила список в новом формате потока, который клиент не может прочитать в более старой версии ComCtl32. Примечание: я никогда не доверяю DFM, передающему список изображений, поэтому я сохраняю само растровое изображение (а не формат потока) в качестве ресурса в отдельной DLL или в моих EXE и загружаю его в список изображений во время выполнения через ImageList_LoadImage .

@kobik Я тоже подумываю о создании индивидуального решения — дам вам знать, что я в конечном итоге делаю.

Но в любом случае проблема не имеет особого смысла. Если посмотреть на TCustomImageList.WriteData, Delphi XE4 всегда записывает в старом формате — либо с помощью параметра «нижнего уровня» V6 — см. ImageListWriteExProc (Handle, ILP_DOWNLEVEL, SA) docs.microsoft.com/en-us/windows/desktop/api/commctrl/… . или, если V6 недоступен, то ImageList_Write (Handle, SA) .. . поэтому данные списка изображений должны сохраняться правильно, несмотря ни на что (и я не вижу никаких специальных комментариев относительно чего-либо вроде Win10 ComCtl32 V6, игнорирующего параметр «нижнего уровня»)

Хотя . TImageList использует ColorDepth «cdDeviceDependent» И в приведенной выше ссылке на документацию действительно сказано: «Вы не должны создавать список изображений, который записывается с флагом ILP_DOWNLEVEL с помощью ILC_COLOR32». . Возможно, стоит изучить дальнейшие исследования, если там что-то происходит .

Поиск в Google по запросу «ImageList_WriteEx ILP_DOWNLEVEL ILC_COLORDDB» не дает результатов. Но логически, если мой компьютер настроен на 32-битный . Тогда ILC_COLORDDB не сопоставляется с ILC_COLOR32 внутри Windows, когда я компилирую свое приложение? И если это так (поскольку 32-битные цвета — это только V6), он проигнорирует параметр ILP_DOWNLEVEL? Я не уверен — я могу трепаться, но, глядя на код Delphi TImageList, его потоковый формат в противном случае всегда должен быть совместим с ComCtl32 V5 . Мне кажется, виноватым должно быть что-то, что не работает должным образом. Но код Delphi выглядит очень чистым.

Еще одна информация. У меня есть полностью пропатченный компьютер WinXP с классическими темами . Там работает.

Почему вы / мы еще даже не знаем, какая именно версия comctl32 загружает ваш исполняемый файл на сайт клиента?

@SertacAkyuz, потому что, когда вы продаете условно-бесплатную программу, вы не очень хорошо знаете пользователей? И часто бывает ограничено количество тестов, которые вы можете провести для них, когда они еще не приобрели (если бы я написал клиенту, что это было ошибкой. Он был человеком, который сказал, что, вероятно, купит, если проблема будет решена)

Источник

Smartadm.ru
Adblock
detector