Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.012 c
2-1150570432
Steplerr
2006-06-17 22:53
2006.07.09
Альтернатива OLE при работе c XLS & DOC


15-1150095145
Sasha:)
2006-06-12 10:52
2006.07.09
Помогите плиз!


2-1150523990
brus
2006-06-17 09:59
2006.07.09
базы данных


2-1150212253
Mr tray
2006-06-13 19:24
2006.07.09
#13#10


15-1150011125
Yanis
2006-06-11 11:32
2006.07.09
Где WASM.RU?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский