[Программистам] [Delphi] Не работает старый код, помогите, кто в теме!

Stapleton

ex wwwoland
23 Май 2011
2.420
1.745
113
Одесса
varishamusic.com
Ребята, может быть, кто-то в теме.
Мне позавчера позвонил старый приятель, для которого я когда-то (как старый пасквилянт) на дельфях ещё третьей версии наг*внокодил плагин к винампу.
Код совершенно ужасный (пожалуйста, не бейте меня сильно), но он без проблем работал на втором винампе и на пятом, но только под win 98/XP.

Под семёркой-восьмёркой это дело не пашет и вешает проигрыватель, а человек принципиально не хочет переходить на другой - только винамп и никак иначе (ему очень удобно, когда он сворачивается вниз в длинную полоску).

Я нашёл папку со старым проектом и первым делом ввёл новую переменную для сохранения файла конфигурации (в папку %APPDATA% вместо папки Winamp/Plugins )
Затем я начал пытаться это всё дело собирать.
В Lazarus (с компилятором fpc) собралось, но винамп тупо не видит плагина. Я пол-дня промучился, а потом наступил на горло песне и скачал Дельфи седьмой версии (вдвойне обидно, что у мну все программы на компе лицензионные, включая Windows).
В Дельфи 7 я ещё немножко пошаманил над кодом и собрал проект. И оно работает (выдаёт 14 warning-ов, но они, походу, не особо принципиальные). Но когда закрываешь Винамп, он зависает напрочь (последняя бета винампа запускает баг-репортёр, пишет лог и не вешает систему (хотя иногда выдаёт Error 216), но всё-таки это не выход).
Логика в Unit1.pas, ну и соответственно в about.pas сами-понимаете-что.
Судя по номеру ошибки, у меня где-то память неправильно занята? Нет?

Во вложениях две версии кода: старинная, и с номером 2 то, что я правил сейчас.

СПАСИБО!

P.S. собирать vis_talmud.dpr
 

Вложения

Последнее редактирование:
Уважаемый wwwoland, несколько вопросов. 1. Где Вы нашли информацию по доступу из Вашей проги к Winamp playlist(нахождение самого окна и выбранного для проигрывания файла) - киньте ссылочку, пожалуйста. 2. Как сделать из exe-файла dll-плагин и подключить его к Winamp(неужели просто переименованием и копированием в папку Winamp/Plugins, я попробовал - не получается каменный цветок). У меня ХР. Программированием на Delphi я балуюсь наравне с шахматами и картами - от случая к случаю. Буду признателен за ответы.
 
На первый вопрос мне будет сложно ответить, т.к. плагин писался давно. Попробуйте дать гуглу запрос наподобие "delphi winamp plugin". Думаю, найдете. По второму вопросу намного проще: в заглавном файле проекта меняем объявление. Вместо "program blablabla;" пишем "library blablabla;". В этом случае проект соберется как ДЛЛ. И чтобы винамп видел плагин, возвращаемся к первому вопросу. Надеюсь, помог.
 
Рекомендую проверенный способ ловли ошибок - комментарить код большими кусками, проверяя, не исчезла ли ошибка. После нахождения большого куска бить его на маленькие и продолжать искать (методом дихотомии :) ), локализуя кусок, который и приводит к ошибке. После этого разбираться, что именно не так в этом маленьком куске (обычно проблема в одной строке). Паскаль подзабыл, но так на первый взгляд ничего не видно
 
Код вполне рабочий, хотя не оптимальный. Тестировал program RoboTalmud. Из косяков обнаружилось только отсутствие инициализации поля data1 из-за чего программа вылетает если после клика правой мышью сразу выбрать цвет текста или размер шрифта по умолчанию. Лечится добавлением в TForm1. FormCreate data1:= inipath;
 
Последнее редактирование:
а если через стат. анализаторы прогнать? правда не уверен, есть ли такие под дельфи.
 
Нашёл книгу. посмотрите раздел Win Api - Завершение Windows - Завершение приложений Delphi. Возможно стоит отказаться от процедуры FormCloseQuery и сохранить настройки в другом месте кода. Мне кажется, что дело в некорректном закрытии какой-то из форм, так как код действительно работает а вылетает всё по закрытии.
 

Вложения

Сейчас просматривают