Главная страница
    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.042 c
6-1141709508
rOOse
2006-03-07 08:31
2006.07.09
Парсинг Url a


1-1148583624
navinaiv
2006-05-25 23:00
2006.07.09
Криптография (гост 28 147-89)


6-1141150518
indy_question
2006-02-28 21:15
2006.07.09
Сложности с TidTCPClient.Write();


4-1143023514
Alex Kryuchkov
2006-03-22 13:31
2006.07.09
Серийный номер мат. платы


15-1150011582
KASioZ
2006-06-11 11:39
2006.07.09
Debugger





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский