Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
Внизбаги VCL - продолжение Найти похожие ветки
← →
Толик (2003-07-28 16:53) [0]Уважаемые мастера. Существует ли возможность исправления ошибок в коде VCL?
Такая ситуация: Есть некий класс VCL, который в своём коде содержит ошибки. В случае компиляции пакета с опцией build with runtime package всё работает как надо (оно и понятно - код пакета формируется внутри exe). А существует ли возможность перекомпиляции runtime пакета, например vcl60.bpl, содержащего этот класс, чтобы не включать этот пакет в тело своего exe-файла?
Существует ли вообще какоё-нибудь механизм исправления ошибок VCL? (ну кроме обращения в службу тех. поддержки)
← →
ZeroDivide (2003-07-28 17:03) [1]Интересно что за класс.
А вообще попробуй создать свой пакет с классами, которые ты используешь, и в инсталяху его добавь, а не vcl60.bpl.
Вобще то я с такими глюками не встречался - единственное что точно знаю в build with runtime package пакеты должны в определенной последовательности быть записаны. Может ты там поотключал чего, а потом не смог вернуть все как было?
← →
AlexRush (2003-07-28 17:05) [2]> В случае компиляции пакета с опцией build with runtime package всё работает как надо (оно и понятно - код пакета формируется внутри exe) - ты сам понял, что написал ?? Вот как раз наоборот :))
А ошибки в большинстве случаев не в VCL... Они чаще в DNA.... (по себе знаю :)
← →
KSergey (2003-07-28 17:11) [3]AlexRush © (28.07.03 17:05)
А ошибки в большинстве случаев не в VCL... Они чаще в DNA.... (по себе знаю :)
Ошибки - да. Хотя, с другой стороны, есть же признанные ошибки, заничит они все же есть ;) (да их не может не быть по определению)
Но ведь вопрос можно переформулировать так: есть желание подправить реализацию класса в VCL (сталкивался сам с модулем Pronters - они там все позапрятали в приват - как с ними бороться после этого? и потомок не спасет...)
← →
Толик (2003-07-28 17:32) [4]to ZeroDivide © (28.07.03 17:03)
THeaderControl - ф-я DoSectionEndDrag
вместо
for i := 0 to Sections.Count - 1 do
SectionOrder[i] := Sections[i].ID;
должно быть
for i := 0 to Sections.Count - 1 do
SectionOrder[i] := Sections[i].Index;
Sections.Update(FromSection);
Sections.Update(ToSection);
to AlexRush © (28.07.03 17:05)
Ну смысл-то понятен. :)
В данном случае проблемы как раз в VCL.
← →
AlexRush (2003-07-28 20:06) [5]Перекомпилить VCL - дело, мягко говоря, непростое. Я как то пытался. Можно подправить исходники в ComCtrls.PAS, можно его скомпилять... НО, при компиляции проги с использованием "подправленного" класса компилятор выдает что-то типа "юнит ХХХ и юнит YYY содержат разные версии класса ZZZ". Компилишь другие юниты - опять.... и так до уср#4ки. Потом окажется, что ДАЛЕКО НЕ ВСЯ VCL в исходниках.... геморойно это все. лучше уж свой клас написать. Сtrl+C / Ctrl+V из ComCtrls.PAS всего, что касается THeaderControl в отдельный юнит, так правь его аки фантазии хватит.. И делай новый компонент. IMHO самый простой путь.
← →
Толик (2003-07-29 10:17) [6]А есть ещё какие-нибудь варианты, кроме как создавать свой компонент?
← →
pasha_golub (2003-07-29 11:51) [7]Я уж не знаю, но я именно делал как описал AlexRush. Копи/Пасте и в новом модуле переписываешь чего надо. Неплохо получается, опять же не сможешь себе геморроя заработать, неверно исправив исходник.
← →
Calm (2003-07-29 13:28) [8]
> Перекомпилить VCL - дело, мягко говоря, непростое.
Да, подчас бывает тяжеловато сделать Project\Build All
:-))
← →
Толик (2003-07-29 13:31) [9]Calm © (29.07.03 13:28)
Ну если всё запихнуть в один exe-шник, то да, а вот если с runtime пакетами?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c