Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошика программы при старте под XP [D6, Win2k, WinXP]


S@shka ©   (2006-05-24 23:11:00) 

На некоторых компах под XP прога при старте вывыливается с ошибкой -
Программа выполнила недопустимую операцию.... бла-бла-бла  kernel32.dll
Характерно только для XP причем где то работает нормально (версии даже могут быть одинаковыми)
С чем это может быть связано?


MegaVolt   (2006-05-25 17:58:00) [1]

Вот то что я правил у себя в comctrls.pas
Первая часть относится к ListView и её нежеланию выводить данные в первом столбце выровнеными вправо.
Вторая убирает глюк при показе ListView в WinXP
Проверял работоспособность правок под 98 и под ХР.
1. Исправления необходимые для нормальной работы выравнивания в первой колонке ListView
  Возможно это нужно было для старых виндов типа Win95

10912: procedure TListColumn.SetAlignment(Value: TAlignment);

 if (Alignment <> Value) and (Index <> 0) then
заменяем на
 if (Alignment <> Value) { and (Index <> 0) } then  // убираем вторую проверку

13632: procedure TCustomListView.UpdateColumn(AnIndex: Integer);

     if Index <> 0 then
       fmt := IAlignment[UseRightToLeftAlignment, AAlignment]
     else fmt := LVCFMT_LEFT;
заменяем на
       fmt := IAlignment[UseRightToLeftAlignment, AAlignment];

2. Исправляет глюк в WinXP :)

13632: procedure TCustomListView.UpdateColumn(AnIndex: Integer);

     if FImageIndex <> -1 then
       fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES;
заменяем на
     if FImageIndex <> -1 then
       fmt := fmt or LVCFMT_IMAGE or LVCFMT_COL_HAS_IMAGES
     else
       mask := mask and not (LVCF_IMAGE);


sicilla   (2006-05-25 15:50:00) [2]

Где можно прочитать про правку в comctrls.pas? или скиньте код правленный, плиз


MegaVolt   (2006-05-25 13:40:00) [3]

Это не шутка. Под WinXP проги с ListView писанные на D5 и с включенным стилем WinXP действительно вылетают по AV даже если вообще никакого кода в них нет. Это правится одной строчкой в comctrls.pas

Неисключено что таже фича есть и с D6


Loginov Dmitry   (2006-05-25 13:13:00) [4]

Компоненты используются?

:)))


MegaVolt   (2006-05-25 12:58:00) [5]

ListView используется?


antonn   (2006-05-25 07:13:00) [6]

с кривым кодом.


Наверх

Титульная страница Поиск, карта сайта Написать письмо