Конференция "KOL" » KOL 3.23 [Delphi, Windows]
 
  • Vladimir Kladov © (21.02.15 10:24) [0]
    [-] Исправления в KOL: WStrRScan - код скопирован из StrRScan. Исходная версия WStrRScan работала некорректно в случае отсутствия искомого образца.
    [-] Исправления в обработчике WM_NCDESTROY для корректного уничтожения меню (не мог быть разрушен после разрушения окна-владельца).
    [*] Улучшена функция ClipboardHasText - удален ненужный код.
    [+] Метод TBitmap.CopyToClipboard переименован в CopyToClipboardAsDIB, добавлена другая версия CopyToClipboard, использующая формат CF_BITMAP (существенно более короткий код).

  • QAZ (21.02.15 14:00) [1]

    > для корректного уничтожения меню

    и какие такие дефины в проекте должны стоять, чтоб до этого исправления дошёл код вообще????

    при закрытии в тестовом приложении как были утечки меню из под дельфи, так и остались, а в крупном проекте еще и ошибки памяти вылезли, попытка модификации после освобождения
  • QAZ (21.02.15 14:05) [2]
    какая связь между этими адресами?
    http://sourceforge.net/projects/kolmck/
    http://sourceforge.net/projects/keyobjectslibrary/
  • Vladimir Kladov © (21.02.15 19:29) [3]

    > чтоб до этого исправления дошё

    Да, я забыл про kol_asm.inc. Перевыложил, заодно и в kol.pas пару исправлений внес. В частности, добавил, что по заклинанию LET_MENU_LEAK все будет как раньше. Еще раз проверил в MemProof 0.9.4.8 и с FastMM3. Все чисто.


    > какая связь между этими адресами?http://sourceforge.net/projects/kolmck/http:
    > //sourceforge.net/projects/keyobjectslibrary/

    Один из них не мой.
  • QAZ (21.02.15 19:59) [4]

    > Один из них не мой.

    не ну я так-то догадался, просто они тож чето там улучшают
    вы типа не скооперированы вообще?
  • QAZ (21.02.15 20:08) [5]

    > Да, я забыл про kol_asm.inc. Перевыложил, заодно и в kol.
    > pas пару исправлений внес. В частности, добавил, что по
    > заклинанию LET_MENU_LEAK все будет как раньше. Еще раз проверил
    > в MemProof 0.9.4.8 и с FastMM3. Все чисто.

    не, не работает
    вот проверь тут полный комплект https://yadi.sk/d/1JxuHV9kedCXf запускай из под среды
  • QAZ (21.02.15 20:22) [6]
    если это - это, то это копец, такая куча дефинов что до Final вообще недоходит

       WM_NCDESTROY:
                          {$IFnDEF SMALLER_CODE}
                          if  fHandle = Msg.hwnd then
                          {$ENDIF}
                          begin
                              {$IFNDEF LET_MENU_LEAK}
                              if  IsForm then
                              begin
                                  {$IFNDEF SMALLER_CODE}
                                  Hide;  // VK: to destroy form visually faster, 18.02.2015
                                  {$ENDIF}
                                  {$IFNDEF SMALLEST_CODE}
                                  Final; // VK: to provide correct menu destroying, 18.02.2015
                                  {$ENDIF}
                              end;
                              {$ENDIF}
                              {$IFnDEF SMALLER_CODE}
                                  {$IFDEF USE_PROP}
                                  RemoveProp( fHandle, ID_SELF ); //********* Added By M.Gerasimov
                                  {$ELSE}
                                  SetWindowLong( fHandle, GWL_USERDATA, 0 ); // VK + Alexey Kirov, 23.02.2012
                                  {$ENDIF}
                              {$ENDIF} //-------------------------------------------
                              Default;
                              Exit;
                          end;


    с PAS_VERSION вообще ниодна строчка в function TControl.WndProc( var Msg: TMsg ): Integer; неактивна в KOL.Pas
  • Vladimir Kladov © (22.02.15 10:52) [7]
    Вообще-то, все доходит. Это у Вас что-то неправильно. Например, не та версия исходников компилируется.

    Мои исправления вообще не касались утечек памяти. FastMM3 их не показывал. Я решал проблему утечки ресурса меню. Пытался решить. Сейчас выкладываю новое исправление. На этот раз удалось лучше. И заодно проблемы с FastMM4 устраняются. Но исправление слишком радикальное, меняется порядок уничтожения окон. Может вылезти что угодно. Поэтому все можно будет вернуть по заклинанию LET_MENU_LEAK.

    Уже выложил.
  • QAZ (22.02.15 11:18) [8]
    ну во первых в комплекте отсутствует koladd.pas хотя требуется для установки
  • QAZ (22.02.15 11:30) [9]
    во вторых чую придется снимать кино....
  • QAZ (22.02.15 12:40) [10]
    в третьих вот видео (15Мб) https://yadi.sk/d/NLj7kB7NeppV9
    а вот фастмм из видео https://yadi.sk/d/zqkEhLZbeppNk
    условия съемки - чистая ХРшка + нулевая 5ка
    что я там делаю не так?
  • Vladimir Kladov © (22.02.15 13:12) [11]
    Сразу: FastMM я скачал сам, версия 4.991, ваша 4.97. Вряд ли много отличий, но лучше, если Вы обновитесь. Дальше: я использовал Delphi7 под XP SP3 (виртуалка) со всеми обновлениями. delphi5 я давно не использую, но даже если с ней работать, для нее есть обновления. Слово нулевая нехорошо звучит.

    Далее, для проверки с FastMM он должен быть первым в проекте. Рекомендую проверять это перед каждым билдом. MCK любит ссылку на KOL ставить на первое место.

    Кроме того, для лучшей диагностики надо править опции проекта, убирать оптимизацию, добавлять в линкере символы TD32, тогда диагностика показывает красивше. Если до нее доходит дело, конечно.
  • QAZ (22.02.15 14:03) [12]

    > нулевая нехорошо звучит

    это звучит как "с обновой, без экспертов, без компонентов, с дефолтными настройками"
    XP SP3 (виртуалка) со всеми обновлениями  - тоже самое
    рабочий Delphi7 + полуживая Win7x64 - тот же результат
    кудаб не писал FastMM, даже в сам кол.пас - никакой разницы
    хоть с какими настройками отладки
    версию FastMM попробую канешн обновить, но веть логично, что если  например в 2.79 такого не происходит, то проблема не в FastMM?
  • Vladimir Kladov © (22.02.15 14:25) [13]
    Да, не в нем. Потому что я уже попробовал и с вашей версией FastMM, и с Delphi5 уже (и даже без обновлений). И у меня все чисто. Еще подумал, может, FastMM молча падает. Нет, останавливается на строке кода FinalizeMemoryManager, по F8, выполняет и хочет работать дальше. Ни сообщений, ни логов. Добавляю опцию LET_MENU_LEAK, сообщения про утечки есть.

    Проверьте, что с сайта KOL скачалась именно версия 3.23 (в начале kol.pas  VERSION 3.23+). MCK я не менял с июня.

    Если не компилятор (версия Delphi), остается только железо и ОС, а это очень странно.
  • QAZ (22.02.15 14:31) [14]
    вобщем с "новым" фастмм и всеми дебугами без оптимизаций
    без LET_MENU_LEAK без среде в винде также ошибка
    с LET_MENU_LEAK в винде без ошибки, а в среде вот такой вот файл с номерами строк, все по ГОСТу
    https://yadi.sk/i/znRAQNpxepuP4
  • Vladimir Kladov © (22.02.15 17:42) [15]
    Обновил только что, 3.23++. Удалось получить сообщения под win7. Не знаю, виртуалка виновата, или еще что, но под XP оно как-то не детектило.
  • QAZ (22.02.15 17:52) [16]
    если DEP включен для всех прог и делфи с проектным файлом не внесено в исключения, тогда может проглатывать
  • QAZ (22.02.15 19:22) [17]
    так так так...
    с меню вроде норм стало, по крайней мере, тестовый примитив и прога средней сложности молчит
    однако в навороченной есть косяк. но уже не с меню, а похоже на Tlist, тоже из под делфи
  • QAZ (22.02.15 19:42) [18]
    чет не пойму толи он врет с номерами строк толи с названием функций, причем через раз
    глянь лог может поймешь https://yadi.sk/i/0Qq_PaHaeqA7T
  • QAZ (22.02.15 20:11) [19]
    о еще косяк в другой поделке
    если я впихиваю формы-фрэймы в таб контрол вот так (может это через Ж..)

    NewForm2(Form2,TabControl1.Pages[2]);
    NewForm3(Form3,TabControl1.Pages[1]);

    то из под делфи опятьже утечка по этим 2м вкладкам или фрэмам, когда табконтроле были панели такого не было
    https://yadi.sk/i/2iRkCf-NeqC5P
    с какой версии эти глюки не скажу, ибо они прятались среди громадья глюков меню
 
Конференция "KOL" » KOL 3.23 [Delphi, Windows]
Есть новые Нет новых   [87919   +42][b:0.002][p:0.003]