Форум: "KOL";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
ВнизОшибка PBitMap, начиная с 2.13 Найти похожие ветки
← →
BMouradov (2005-10-10 16:07) [0]Начиная с версии 2.13 проявляется вот такая ошибка:
bmp := PbitMap(0, 0);
...
bmp.Width := 99;
...
bmp.Width := 100;
В этот момент возникает ошибка EInvalidPoiter.
В WindowsXP эта ошибка не возникает, в 98-м - возникает.
Привести точный код пока не могу, надо многое выкинуть из текста, если надо - могу проделать эту работу.
Точно проверил, что в 2.12 этот код нормально работает, а в 2.13 и 2.14 - нет.
← →
Vladimir Kladov (2005-10-10 21:11) [1]спасибо, а я думал, что уже все нашел. Просто в 2.13 изменился способ хранения dib-bitmap"ов, память выделяется теперь через GlobalAlloc, ну и соответственно, попытка освободить ее другим способом вызывает неприятности. Исправлю, конечно же.
← →
miek © (2005-10-11 13:59) [2]globalAlloc? то есть, теперь при вылете программы все занятые ею битмапы останутся и будут в памяти? это не есть хорошо.
← →
Vladimir Kladov (2005-10-11 18:41) [3]я пока не смог воспроизвести, в 2.14.
В какой памяти, что это вы право. В NT вся память процесса освобождается при любом способе завершения. В 9х она по-любому не освобождается. Потому что программа на Delphi в конечном счете кучу выделяет через GlobalAlloc, а при вылете она не освобождается, и после нескольких "недопустмых" все равно надо перезагружаться. Зато теперь правильно работает SetDibitsToDevice и StretchDibits, для битмапов любого размера.
← →
BMouradov (2005-10-12 11:16) [4]Постараюсь выделить нужную последовательность команд. Сразу пришлю.
← →
BMouradov (2005-10-12 19:40) [5]Вот такой код у меня выдает ошибку под 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.
← →
Vladimir Kladov (2005-10-12 21:18) [6]такое ощущение, что я у себя уже исправил, и в 2.15 будет правильно. Подождите до пятницы.
← →
BMouradov (2005-10-18 20:16) [7]Нет. Только что попробовал 2.15 - ошибка не исчезла. Тот же код, в том же месте. Забыл написать - Win98, режим 16-цветный.
Код 2.16 попробовать не могу - не компилируется.
← →
Vladimir Kladov (2005-10-19 07:40) [8]Сказал же: добавить ICON_DIFF_WH в опции, пересобрать пакет (не Compile, а BUILD)
← →
BMouradov (2005-10-19 18:35) [9]Попробовал 2.17 - ошибка не исчезла. Тот же код, в том же месте.
← →
Vladimir Kladov (2005-10-20 09:09) [10]win98 у меня нет (и нескоро будет возможность сделать, только если под vmware). А другие режимв, кроме 16 цветов - пробовали? Хотелось бы уточнить, что там такое может быть до того как идти все ломать.
← →
BMouradov (2005-10-20 11:16) [11]Мне присылали информацию несколько человек из разных операционок и разных видеорежимов, В том числе Win2000. Я у себя нигде повторить не смог, кроме как под wmware. А под wmware не смог настроить другую цветность, увы.
Если подскажете, как я смогу помочь (проследить, например, на какой строке в KOL вылезает ошибка) подскажите.
← →
Vladimir Kladov (2005-10-20 21:13) [12]нашел: в KOL.pas в строке примерно 53935 надо заменить FreeMem( NewBits на GlobalFree( NewBits
Проявлялось только в 98 (хотя конечно неверно было и в NT, это же leak чистый). Завтра вечером если силы еще будут обновлю все новые исправления.
← →
BMouradov (2005-10-21 12:18) [13]Спасибо, теперь всё работает!
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2006.07.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c