![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка 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, ну и соответственно, попытка освободить ее другим способом вызывает неприятности. Исправлю, конечно же.