Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Ошибка 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 вся ветка

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.054 c
2-1150867093
Arazel
2006-06-21 09:18
2006.07.09
Unicode в ACSII результат ???


2-1150948586
D@Nger
2006-06-22 07:56
2006.07.09
Установка компонента ZipMaster


1-1148843711
Glivera
2006-05-28 23:15
2006.07.09
Удаление пустых строчек из Excel я


2-1151049152
Alex_1qaz_2006
2006-06-23 11:52
2006.07.09
Запуск внешнего приложения


2-1151034070
MasterDelphi
2006-06-23 07:41
2006.07.09
MySql