Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.08;
Скачать: CL | DM;

Вниз

Как грамотно подправить VCL?   Найти похожие ветки 

 
Piter ©   (2004-07-21 01:02) [0]

Только не говорите, что VCL править это дурной тон и все такое. Знаю, но зачастую это необходимо. Средствами ООП слишком сложно и утомительно (а может и просто невозможно) сделать то, что нужно. Проще подправить пару строчек в VCL. В общем, не вдаваясь в проблему - а надо ли править VCL, ответье - как это сделать более грамотно?

Например, я переправил юнит menus, все отлично, теперь все показывается на русском даже на английской ОС. И я как делал - просто брал и и правил pas модуль, а  потом его включал в проект, чтобы он скомпилировался вместе с программой. Иначе компилятор просто плюет на мои изыски и берет готовые DCU не обращая внимания на исправление в pas модуле. Если стереть DCU - ругается, что Pas файл не найден (хотя он очевидно есть в путях). В общем, проблему решил включение переправленного модуля в программу...

Но вот стал включать forms - и компилятор стал ругаться, что модуль под таким именем уже включен в программу... и что делать? Как подправить пару строчек в forms и сделать так, чтобы переправленный модуль включился в программу?

P.S. Я, конечно, признаю, что слабо разбираюсь в том, как используется VCL компилятором... причем, есть несколько DCU - обычне и отладочные (которые включаеются соответствующей галочкой). Чем они отличаются - тоже непонятно. В общем, просветите, Мастера!


 
wnew ©   (2004-07-21 02:42) [1]

Говоришь на английской ОС меню выводится корректно на русском? А локальные установки какие на этой ОС?
К примеру под немецкоязычным Windows, если локальные установки русские - любая русскоязычная программа работает корректно: все кириллические шрифты; меню, дерево каталогов, сообщения и т.д. отображаются нормально. При чём в WindowsXP локализацию можно менять, когда вздумается, но, к сожалению, нужно перегружаться. А Windows 98 и ME легко локализовать правкой реестра. Но для того чтобы переключать локализацию в 98 и ME оперативно - желательно написать программку, которая меняла бы значения определённых ключей реестра. Правда, при этом возникает побочный эффект: к примеру в немецком Windows имеется папка "Programme", именно с двумя "m", а при переключении на русскую локализацию Windows автоматически создаёт папку "Programe" и в дереве каталогов, и в Windows menu, что приводит к некоторому нежелательному, но не очень мешающему эффекту: программы установленные под русской локализацией не возможно открыть из Windows menu и наоборот. А во всём остальном всё корректно и, даже, можно пользоваться немецкими программами под русской локализацией, но единственно при этом вместо немецких умляутов в меню отображаются русские буквы, однако это не помеха:) Но в любом случае без перезагрузки винды ничего не получится, а жаль.
  А копаясь в Delphi, думаю, этот вопрос не решить: для отображения меню Windows использует системный шрифт *.fon, который загружается при старте системы. И вообще, в Delphi на винде с не русской локализацией с кириллицей может работать только RichEdit, а всё остальное выводит вместо кириллических символов знаки вопроса.


 
Константинов ©   (2004-07-21 03:37) [2]

tо wnew.
Я знаю вы живете в Германии.
Не могли бы Вы мне помочь.
Жена преподаватель немецкого.
Необходима проверка орфографии немецкого в ворде.
Хелпы отсылают к официальным представителям мелкомягких.
Там, насколько я понял, на халяву такие вещи не раздают.
Может есть какой либо приемлемый способ поставить на пиратский офис ХР немецкую орфографию?


 
wnew ©   (2004-07-21 04:06) [3]

Я без понятия на такую тему. Знаю лишь, что есть программы встраиваемые в MicrosoftWord, но наоборот в немецкий для проверки русской орфографии. Но, думаю, что можно просто установить немецкий, например: Office 97. При этом на русском Windows в пунктах меню вместо умляутов будут отображены русские буквы, но это не создаст больших проблем. Если такой вариант устраивает - свяжись со мной по э-почте: w.micheew(гав-гав)wnew.de


 
АлексейК   (2004-07-21 06:25) [4]

Например, я переправил юнит menus, все отлично, теперь все показывается на русском даже на английской ОС. И я как делал - просто брал и и правил pas модуль, а  потом его включал в проект, чтобы он скомпилировался вместе с программой. Иначе компилятор просто плюет на мои изыски и берет готовые DCU не обращая внимания на исправление в pas модуле. Если стереть DCU - ругается, что Pas файл не найден (хотя он очевидно есть в путях). В общем, проблему решил включение переправленного модуля в программу...
Так после правки модуля, что мешает скомпилировать новый DCU?


 
ИдиотЪ   (2004-07-21 09:01) [5]

таким способом править - это не есть хорошо
кто тебе мешает создать свою версию компонент и установить в дельфи? Вот там ты можешь делать че хочешь, из оригинала брать или т.п.
Иначе тебе будет весело потом править все зависимые от твоей редакторской правки модули.


 
Rouse_ ©   (2004-07-21 09:18) [6]

Копируешь PAS в папку со своим проектом и там кромсай его как взумается, а генофонд напрямую не трож :)


 
ИдиотЪ   (2004-07-21 09:19) [7]

хоть местами и корявенький, но все-ж таки генофонд


 
Суслик ©   (2004-07-21 10:27) [8]

поддерживаю 6 - сам раньше так делал, когда опыта не хватало сделать иначе - правил все подряд. ЛОжишь в папку проекта и вперед.


 
Плохиш ©   (2004-07-21 11:15) [9]


> Константинов ©   (21.07.04 03:37) [2]

http://forum.rus-chat.de/printMessage1900255.html


 
VMcL ©   (2004-07-21 11:25) [10]

>>Суслик ©  (21.07.04 10:27) [8]

>ЛОжишь в папку проекта

"Кладешь", а не "ложишь" :)


 
Mystic ©   (2004-07-21 11:28) [11]

Использовал бы ресурсную DLL для локализации... А так...Хорошо бы перекомпилить пакет vcl50


 
ИдиотЪ   (2004-07-21 11:29) [12]

хорошо бы IDE перекомпилить )
И поковырять ес-но


 
VMcL ©   (2004-07-21 11:31) [13]

>>ИдиотЪ  (21.07.04 11:29) [12]

Кто мешает. SoftIce + IDA в помощь :)


 
Плохиш ©   (2004-07-21 11:32) [14]


> Mystic ©   (21.07.04 11:28) [11]
Хорошо бы перекомпилить пакет vcl50

> ИдиотЪ   (21.07.04 11:29) [12]
хорошо бы IDE перекомпилить )
И поковырять ес-но

Дык, в чём проблемы-то?


 
ИдиотЪ   (2004-07-21 11:36) [15]

VMcL ©  
сами в кодах ковыряйтесь, я уж обойдусь как-нибудь


 
VMcL ©   (2004-07-21 11:42) [16]

>>ИдиотЪ  (21.07.04 11:36) [15]

Я, чиста, не понял. Шо за наезды? Ты же сам написал в [12] "хорошо бы IDE перекомпилить ) И поковырять ес-но"

Вот и флаг, тьфу... SoftIce в руки :)


 
ИдиотЪ   (2004-07-21 12:01) [17]

VMcL ©
не наезд)
мне бы исходники в руки


 
Mystic ©   (2004-07-21 12:21) [18]

>> Хорошо бы перекомпилить пакет vcl
> Дык, в чём проблемы-то?


Для этого надо декомпилить vclXX.dcp посмотреть, какие файлы в него входят, создатьсвой dpk и уже откомпилить его. Потому в случае раздельной компиляции с пакетами будут браться dcu-шники из vclXX.dcp, а не какие-либо другие...


 
Piter ©   (2004-07-21 17:14) [19]

Опять флуд... эх, что же делать :)

wnew ©   (21.07.04 2:42) [1]

спасибо за пост, информативно. Чтобы не растекаться в этой ветке я специально открыл другую, где выложил свои эксперименты - http://delphimaster.net/view/14-1090415459/
Правда, результаты несколько расходятся с вашими "если локальные установки русские - любая русскоязычная программа работает корректно"

АлексейК   (21.07.04 6:25) [4]
Так после правки модуля, что мешает скомпилировать новый DCU?


не понял твою мысль

ИдиотЪ   (21.07.04 9:01) [5]
кто тебе мешает создать свою версию компонент и установить в дельфи? Вот там ты можешь делать че хочешь, из оригинала брать или т.п.
Иначе тебе будет весело потом править все зависимые от твоей редакторской правки модули.


это практически невозможно сделать с помощью ООП. Придется тупо переносить огромную тучу кода...

Rouse_ ©   (21.07.04 9:18) [6]
Копируешь PAS в папку со своим проектом и там кромсай его как взумается, а генофонд напрямую не трож


а тогда вопрос - ведь другие стандартные юниты тоже могут использовать мой исправленный юнит... откуда они будут его брать, из моего проекта или из папки с VCL?

Суслик ©   (21.07.04 10:27) [8]
сам раньше так делал, когда опыта не хватало сделать иначе


тебе и сейчас опыта не хватит сделать иначе

Mystic ©   (21.07.04 11:28) [11]
Использовал бы ресурсную DLL для локализации


ну я же не хочу тупо перевести язык на английский, задача другая - чтобы в иностранных виндах все отображалось по русски

А так...Хорошо бы перекомпилить пакет vcl50

а можно поподробнее? Вот я исправил forms - что делать, чтобы изменения так сказать вступили в силу, чтобы все юниты, все проекты исползовани новый forms?

Объясню еще раз проблему - с включение модулей в проект проблем нету! Но никак не получается включить в проект модуль forms! Не дает IDE Delphi - кричит, что forms уже включен, поэтому я не могу использовать свой forms, используется стандартный, из DCU существующих

wnew ©   (21.07.04 2:42) [1]
А копаясь в Delphi, думаю, этот вопрос не решить: для отображения меню Windows использует системный шрифт *.fon, который загружается при старте системы


если говорить о win2000 и выше - это не верно. И еще стоит учесть, что обычные меню рисует Windows - это да. Но вот меню с картинками рисует Delphi с помощью функий dodrawtext, кажется. И если использовать вместо DoDrawText его аналог dodrawtextw, то все отобразится зашибись. Это же касается и меню без изображений, если меню создавать не с помощью InsertMenu, а с помощи InsertMenuW с соответствующей структурой - то опять же все будет зашибись в любой Unicode windows...
В общем, читайте мою новую ветку.


 
Rouse_ ©   (2004-07-21 17:22) [20]

> а тогда вопрос - ведь другие стандартные юниты тоже могут
> использовать мой исправленный юнит... откуда они будут его
> брать, из моего проекта или из папки с VCL?

Если не пропишешь путь к исправленнуму юниту - то другие его "юзать" не будут...


 
Piter ©   (2004-07-21 18:23) [21]

Rouse_ ©   (21.07.04 17:22) [20]
Если не пропишешь путь к исправленнуму юниту - то другие его "юзать" не будут...


то есть, они будут использовать стандартный юнит вместо моего исправленного так? Получается, у меня будет два модуля forms в моей программе, например? Ничего не понимаю...


 
ИдиотЪ   (2004-07-21 18:26) [22]

ту Piter ©  
не будут они брать твой модуль,
у них там проверка стоит на соответствие какая-то


 
Rouse_ ©   (2004-07-22 10:32) [23]

> [21] Piter ©   (21.07.04 18:23)
Они будут использовать либо тот модуль который лежит в папке с проектом, а если его там нет - тогда стандартный из "генофонда"


 
ИдиотЪ   (2004-07-22 11:48) [24]

Rouse_ ©
только неоткомпилированные модули будут искать
все dcu уже привязаны к конкретной компиляции


 
Piter ©   (2004-07-22 13:15) [25]

ИдиотЪ   (22.07.04 11:48) [24]

и чего делать? Получается, я буду использовать свой forms, а другие модули будут использовать другой forms? По идее размер программы должен увеличиться, а такого не происходит...



Страницы: 1 вся ветка

Текущий архив: 2004.08.08;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.023 c
1-1090593728
fess
2004-07-23 18:42
2004.08.08
Приемы работы с Chart


1-1090847901
CTAPbIi
2004-07-26 17:18
2004.08.08
Как программно сделать горизонтальный scroll в Memo


3-1089636306
libadmin
2004-07-12 16:45
2004.08.08
Что быстрее?


3-1089639743
denis24
2004-07-12 17:42
2004.08.08
Добавление записи в table


3-1089860328
Ozone
2004-07-15 06:58
2004.08.08
Непонятки с запросом