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

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

Ошибка PBitMap, начиная с 2.13


BMouradov ©   (2005-10-10 16:07:00) 

Начиная с версии 2.13 проявляется вот такая ошибка:

bmp := PbitMap(0, 0);
...
bmp.Width := 99;
...
bmp.Width := 100;

В этот момент возникает ошибка EInvalidPoiter.
В WindowsXP эта ошибка не возникает, в 98-м - возникает.
Привести точный код пока не могу, надо многое выкинуть из текста, если надо - могу проделать эту работу.
Точно проверил, что в 2.12 этот код нормально работает, а в 2.13 и 2.14 - нет.


BMouradov   (2005-10-21 12:18:00) [1]

Спасибо, теперь всё работает!


Vladimir Kladov   (2005-10-20 21:13:00) [2]

нашел: в KOL.pas в строке примерно 53935 надо заменить FreeMem( NewBits на GlobalFree( NewBits
Проявлялось только в 98 (хотя конечно неверно было и в NT, это же leak чистый). Завтра вечером если силы еще будут обновлю все новые исправления.


BMouradov   (2005-10-20 11:16:00) [3]

Мне присылали информацию несколько человек из разных операционок и разных видеорежимов, В том числе Win2000. Я у себя нигде повторить не смог, кроме как под wmware. А под wmware не смог настроить другую цветность, увы.

Если подскажете, как я смогу помочь (проследить, например, на какой строке в KOL вылезает ошибка) подскажите.


Vladimir Kladov   (2005-10-20 09:09:00) [4]

win98 у меня нет (и нескоро будет возможность сделать, только если под vmware). А другие режимв, кроме 16 цветов - пробовали? Хотелось бы уточнить,  что там такое может быть до того как идти все ломать.


BMouradov   (2005-10-19 18:35:00) [5]

Попробовал 2.17 - ошибка не исчезла. Тот же код, в том же месте.


Vladimir Kladov   (2005-10-19 07:40:00) [6]

Сказал же: добавить ICON_DIFF_WH в опции, пересобрать пакет (не Compile, а BUILD)


BMouradov   (2005-10-18 20:16:00) [7]

Нет. Только что попробовал 2.15 - ошибка не исчезла. Тот же код, в том же месте. Забыл написать - Win98, режим 16-цветный.

Код 2.16 попробовать не могу - не компилируется.


Vladimir Kladov   (2005-10-12 21:18:00) [8]

такое ощущение, что я у себя уже исправил, и в 2.15 будет правильно. Подождите до пятницы.


BMouradov   (2005-10-12 19:40:00) [9]

Вот такой код у меня выдает ошибку под Win98 и не даёт под WinXP. Напоминаю, что это 2,14, под 2,12 этой ошибки нет.

program Project1;

uses
 KOL;

var FMap: PBitMap;
begin
 FMap := NewBitMap(1, 1);
 FMap.PixelFormat := pf24bit;
 FMap.Width := 100;
end.


BMouradov   (2005-10-12 11:16:00) [10]

Постараюсь выделить нужную последовательность команд. Сразу пришлю.


Vladimir Kladov   (2005-10-11 18:41:00) [11]

я пока не смог воспроизвести, в 2.14.

В какой памяти, что это вы право. В NT вся память процесса освобождается при любом способе завершения. В 9х она по-любому не освобождается. Потому что программа на Delphi в конечном счете кучу выделяет через GlobalAlloc, а при вылете она не освобождается, и после нескольких "недопустмых" все равно надо перезагружаться. Зато теперь правильно работает SetDibitsToDevice и StretchDibits, для битмапов любого размера.


miek   (2005-10-11 13:59:00) [12]

globalAlloc? то есть, теперь при вылете программы все занятые ею битмапы останутся и будут в памяти? это не есть хорошо.


Vladimir Kladov   (2005-10-10 21:11:00) [13]

спасибо, а я думал, что уже все нашел. Просто в 2.13 изменился способ хранения dib-bitmap'ов, память выделяется теперь через GlobalAlloc, ну и соответственно, попытка освободить ее другим способом вызывает неприятности. Исправлю, конечно же.


Наверх

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