315 lines
24 KiB
Plaintext
315 lines
24 KiB
Plaintext
Mirror Classes Kit для Key Objects Library, v2.89 [20 марта 2010г.]
|
|
Copyright (C) 1999-2007 by Vladimir Kladov
|
|
-------------------------------------------------
|
|
Поддерживает Delphi 2, 3, 4, 5, 6, 7
|
|
KOL совместима так же с Delphi 8, BDS 2005, 2006, 2010, 2012(XE, XE2), Turbo-Delphi и с Free Pascal 1.0.5/2.x (MCK-проекты, изготовленные в Delphi, так же компилируются с Free Pascal)
|
|
KOL частично совместима с Kylix/FPC для компиляции под Linux с использованием Qt
|
|
|
|
ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ ПРЕДУПРЕЖДЕНИЯ В КОНЦЕ ЭТОГО ФАЙЛА!
|
|
И ОСОБЕННО ОБРАТИТЕ ВНИМАНИЕ НА РАЗДЕЛ "РАЗРЕШЕНИЕ ПРОБЛЕМ", если у вас возникли какие-либо проблемы с установкой или использованием MCK.
|
|
|
|
СОДЕРЖАНИЕ
|
|
|
|
I. ВВЕДЕНИЕ
|
|
II. УСТАНОВКА
|
|
III. НАЧАЛО НОВОГО ЗЕРКАЛЬНОГО ПРОЕКТА
|
|
IV. ДОБАВЛЕНИЕ ФОРМЫ
|
|
V. УДАЛЕНИЕ ФОРМЫ
|
|
VI. ПЕРЕИМЕНОВАНИЕ ФОРМЫ
|
|
VII. НАПИСАНИЕ ЗЕРКАЛЬНОГО КОДА
|
|
VIII. ДОБАВЛЕНИЕ ССЫЛКИ НА МОДУЛЬ
|
|
IX. ИСПОЛЬЗОВАНИЕ НАСЛЕДНИКОВ TComponent ИЗ VCL
|
|
X. АВТОМАТИЧЕСКИ ГЕНЕРИРУЕМЫЕ ФАЙЛЫ
|
|
XI. MAINTAINANCE (КОПИРОВАНИЕ ФАЙЛОВ ПРОЕКТА)
|
|
XII. ПРЕДУПРЕЖДЕНИЯ
|
|
XIII. РАЗРЕШЕНИЕ ПРОБЛЕМ
|
|
XIV. ДОПОЛНИТЕЛЬНО (Collapse)
|
|
|
|
I. ВВЕДЕНИЕ
|
|
|
|
MCK (Mirror Classes Kit) - это набор зеркальных классов для ВИЗУАЛЬНОЙ разработки проекта в среде Delphi с использованием библиотеки KOL. (Что такое KOL - здесь разъяснять не буду, отсылаю на http://www.kolmck.net). Хотя изначально ни KOL, ни ее предшественник XCL для визуальной разработки не годились и предназначены не были, предложения, идеи, вопросы и мысли от разрличных людей по этому поводу поступали с завидной регулярностью. Наконец, поразмыслив, я пришел к выводу, что все-таки реализовать визуальность для KOL возможно. И, несмотря на провал предыдущей попытки (проект XCL Wizard, если кто в курсе - он отнял у меня более полугода), я решился на новый проект. И хотя я сам неоднократно убеждал своих оппонентов в том, что это невозможно... За четыре вечера мне, кажется удалось совершить этот рывок.
|
|
|
|
Суть идеи "зеркальных классов" заключается в следующем. Для каждого визуально обособленного объекта библиотеки KOL создается компонент Delphi, который регистрируется обычным для компонента Delphi способом и размещается на палитре компонентов. Термин "визуально обособленный" я использую потому, что один и тот же (с формальной точки зрения) объектный тип в KOL может выполнять функции различных визуальных элементов. Например, TControl может быть и формой, и кнопкой, и меткой, и вообще каким угодно диалоговым элементом.
|
|
|
|
Проектирование в "зеркальных" классах состоит в том, что на этапе времени разработки (design-time) на форме размещается необходимое число зеркальных компонентов, настраиваются их свойства и события, пишется код обработчиков событий и делается все остальное, что нужно делать на этом этапе. При запуске полученного проекта... (и это новое)... генерируется код, который не содержит никаких обращений к классам VCL, и использует только возможности KOL. Этот код может быть запущен и отлажен самостоятельно или под отладчиком IDE. То есть, после начального создания проекта KOL согласно прилагаемым ниже инструкциям нет никакой необходимости переключаться в зеркальный проект - сам целевой проект является зеркальным. В том смысле, что во время разработки он ведет себя как визуальный, а после компиляции превращается в... чистый от VCL.
|
|
|
|
Описанный выше способ нисколько не сложнее того, к которому мы привыкли. Однако, результат превосходит все ожидания! Размер полученного приложения иногда в десять и более раз меньше аналогичного VCL-приложения, исполняется оно намного быстрее и ресурсов потребляет намного меньше, что действительно важно.
|
|
|
|
То, что есть на данном этапе - уже НЕ макет, а годный к ПРАКТИЧЕСКОМУ ИСПОЛЬЗОВАНИЮ инструмент, который прекрасно выполняет поставленную задачу (его, конечно, можно совершенствовать, но это не должно мешать главной цели - его использованию).
|
|
Основные отличие при программировании для KOL с MCK (от программирования в VCL) следующие:
|
|
|
|
- Не следует изменять свойства самой формы, кроме изменения ее размеров и позиции. Вместо этого изменяйте свойства объекта (компонента) TKOLForm, лежащего на ней. То же касается обработчиков событий. События, относящиеся к форме, назначайте для компонента TKOLForm!
|
|
|
|
- Не следует бросать на форму не-MCK компоненты и визуальные объекты. Работать можно только с компонентами, входящими в состав MCK.
|
|
|
|
- Некоторые свойства MCK-компонентов специально предназначены для времени проектирования и недоступны во время исполнения. Обычно названия таких свойств начинаются со строчной буквы.
|
|
|
|
- Для разрешения конфликта между VCL.Self и KOL.@Self введено заменяющее слово Form, которое требуется теперь использовать при написании кода в зеркальном проекте как синоним @Self для формы. На этапе разработки Form "как бы возвращает" Self (как бы - потому что этот код никогда не компилируется и не исполняется). После конверсии проекта Form ссылается теперь на объект формы (Form теперь является полем объекта, содержащего форму и ее дочерние объекты, и имеет тип PControl - в полном соответствии с требованиями KOL).
|
|
Таким образом, не следует писать в обработчике события
|
|
Caption := 'Привет';
|
|
Такой код не будет скомпилирован. Вместо этого следует писать:
|
|
Form.Caption := 'Привет';
|
|
|
|
- локальные в VCL-форме компоненты, брошенные на нее во время разработки, одинаково "видны" в результирующем проекте KOL, хотя и не являются членами класса формы. Так происходит потому, что обработчики событий в "отраженном" проекте становятся методами того же объектного типа, членами которого теперь являются "образы" компонентов - визуальные и невизуальные объекты, "принадлежащие" форме.
|
|
Примечание. Сия замысловатая фраза означает, что можно написать в обработчике события Button1, и это будет воспринято именно так, как Вы подумали.
|
|
|
|
- визуальное отображение контролов на этапе разработки (design-time) выполняется схематически, но позже (ещ позже) несложно может быть смоделировано более тщательное отображение путем переопределения процедуры Paint в каждом из зеркальных классов. (Более того, появляется потенциальная возможность менять визуальное представление объектов на форме простым изменением соответствующего (design-time-only) свойства в компоненте TKOLProject, или получать от этого дополнительные выгоды, что пока не реализовано).
|
|
|
|
- возможные конфликты между одинаковым наименованием типов, процедур, функций, констант и переменных в KOL и VCL предлагается решать по следующему правилу: 1. если имя имеет тождественный по смыслу тип, конфликт не возникает. 2. если совпадает только имя, то добавление уточняющего префикса <KOL.> устранит конфликт полностью (ссылка на KOL должна быть добавлена в директиву uses ПЕРВОЙ, чтобы объявления KOL имели меньший приоритет по сравнению с объявлениями VCL на этапе разработки кода в исходном проекте. Впрочем, такое добавление ссылки на KOL делается автоматически).
|
|
|
|
II. УСТАНОВКА
|
|
___________________________________
|
|
DELPHI7 - УСТАНОВКА
|
|
|
|
1. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
2. Открыть MirrorKOLPackageD7.dpk в Delphi IDE и нажать 'Install'.
|
|
|
|
DELPHI7 - ПЕРЕУСТАНОВКА (UPGRADE)
|
|
|
|
1. Во избежание возможных неприятностей, закрыть все файлы в IDE (File|Close All).
|
|
2. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
3. Открыть MirrorKOLPackageD7.dpk в Delphi IDE и в выпадающем меню на самом пакете (разделитель под панелью кнопок) нажать 'Build' или в меню IDE: Project | Build All или Project | Build MirrorKOLPackageD7 (если пакет уже установлен, кнопка 'Install' должна быть недоступна). Ни в коем случае не использовать Compile.
|
|
|
|
___________________________________
|
|
DELPHI6 - УСТАНОВКА
|
|
|
|
1. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
2. Открыть MirrorKOLPackageD6.dpk в Delphi IDE и нажать 'Install'.
|
|
|
|
DELPHI6 - ПЕРЕУСТАНОВКА (UPGRADE)
|
|
|
|
1. Во избежание возможных неприятностей, закрыть все файлы в IDE (File|Close All).
|
|
2. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
3. Открыть MirrorKOLPackageD6.dpk в Delphi IDE и в выпадающем меню на самом пакете (разделитель под панелью кнопок) нажать 'Build' или в меню IDE: Project | Build All или Project | Build MirrorKOLPackageD6 (если пакет уже установлен, кнопка 'Install' должна быть недоступна). Ни в коем случае не использовать Compile.
|
|
|
|
___________________________________
|
|
DELPHI5 - УСТАНОВКА
|
|
|
|
1. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
2. Открыть MirrorKOLPackage.dpk в Delphi IDE и нажать 'Install'.
|
|
|
|
DELPHI5 - ПЕРЕУСТАНОВКА (UPGRADE)
|
|
|
|
1. Во избежание возможных неприятностей, закрыть все файлы в IDE (File|Close All).
|
|
2. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
3. Открыть MirrorKOLPackage.dpk в Delphi IDE и в выпадающем меню на самом пакете (разделитель под панелью кнопок) нажать 'Build' (если если меню не доступно, закрыть все и открыть пакет снова, возможно, следует использовать File | Open, и не использовать Reopen). Ни в коем случае не использовать Compile.
|
|
|
|
___________________________________
|
|
DELPHI4 - УСТАНОВКА
|
|
|
|
1. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
2. Открыть MirrorKOLPackageD4.dpk в Delphi IDE и нажать 'Install'.
|
|
|
|
DELPHI4 - ПЕРЕУСТАНОВКА (UPGRADE)
|
|
1. Во избежание возможных неприятностей, закрыть все файлы в IDE (File|Close All).
|
|
2. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
3. Открыть MirrorKOLPackaged4.dpk в Delphi IDE и в выпадающем меню на самом пакете (разделитель под панелью кнопок) нажать 'Build' (если если меню не доступно, закрыть все и открыть пакет снова, возможно, следует использовать File | Open, и не использовать Reopen). Ни в коем случае не использовать Compile.
|
|
|
|
___________________________________
|
|
DELPHI3 - УСТАНОВКА
|
|
|
|
1. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
2. Открыть MirrorKOLPackageD3.dpk в Delphi IDE и нажать 'Install'.
|
|
|
|
DELPHI3 - ПЕРЕУСТАНОВКА (UPGRADE)
|
|
1. Во избежание возможных неприятностей, закрыть все файлы в IDE (File|Close All).
|
|
2. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
3. Открыть MirrorKOLPackageD3.dpk в Delphi IDE и в выпадающем меню на самом пакете (разделитель под панелью кнопок) нажать 'Build All' (если если меню не доступно, закрыть все и открыть пакет снова, возможно, следует использовать File | Open, и не использовать Reopen). Ни в коем случае не использовать Compile.
|
|
|
|
___________________________________
|
|
DELPHI2 - УСТАНОВКА
|
|
|
|
1. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
2. Component|Install...|Add|Browse|mirror.pas|OK
|
|
3. Component|Install...|Add|Browse|mckObjs.pas|OK
|
|
4. Component|Install...|Add|Browse|mckCtrls.pas|OK
|
|
|
|
DELPHI2 - ПЕРЕУСТАНОВКА (UPGRADE)
|
|
1. Во избежание возможных неприятностей, закрыть все файлы в IDE (File|Close All).
|
|
2. Распаковать файлы в ту же директорию, в которой установлен KOL.
|
|
3. Component|Install...|OK (установленные ранее модули mirror, mckObjs, mckCtrls уже должны быть видны в списке)
|
|
|
|
|
|
III. НАЧАЛО НОВОГО ЗЕРКАЛЬНОГО ПРОЕКТА
|
|
|
|
1. В IDE Delphi: File|NewApplication.
|
|
|
|
2. Не бросать пока никакие компоненты на форму. Из меню выполнить File|Save All, выбрать папку для сохранения зеркального проекта и его модулей, и сохранить проект (два файла). ВСЕ МОДУЛИ проекта ВСЕГДА должны находиться В ОДНОЙ ДИРЕКТОРИИ!
|
|
Внимание! Не называйте dpr-файл именем конечного проекта. Пусть он останется пока с именем Project1 (например). Назовите главный модуль (Unit1.pas) так, как он будет называться в проекте.
|
|
|
|
3. Бросить TKOLProject на форму.
|
|
|
|
4. Изменить свойство ProjectDest (это имя результирующего проекта, здесь как раз можно ввести "настоящее" имя проекта, т.е. его dpr-файла, без расширения или указания пути - ввести следует только идентификатор).
|
|
|
|
5. Бросить на форму компонент TKOLForm.
|
|
|
|
6. В Delphi5 (только), необходимо теперь прописать в опциях САМОГО ПРОЕКТА путь к сервисным модулям:
|
|
Project | Options | Directories/Conditionals | Search path
|
|
и вписать сюда: $(Delphi)\Source\ToolsApi
|
|
(возможно ввести этот путь в список Library path в Tools | Environment options | Library один раз, чтобы больше не заботиться об этом).
|
|
|
|
7. Если TKOLForm был брошен (5.) ПОСЛЕ изменения свойства TKOLProject.projectDest (4.), данный шаг не нужен, и результирующий проект готов (переходим к п.8).
|
|
Иначе:
|
|
измените в свойствах формы (TKOLForm), например, ее размер. Хотя exe-файл и не создается, результирующий проект при этом формируется, и готов к тому, чтобы его открыть.
|
|
|
|
8. Откройте полученный проект (в той же директории, имя - то, которое было задано в KOLProject1.ProjectDest). Файлы Project1.* можно со спокойной совестью удалить.
|
|
|
|
9. А вот теперь Вы имеете проект KOL/MCK. Можно бросать на форму зеркальные контролы из палитры (закладка KOL), настраивать их, назначать события, кодировать... Запускать, отлаживать. Короче, Банзай! т.е. Enjoy!
|
|
|
|
IV. ДОБАВЛЕНИЕ ФОРМЫ
|
|
1. File|New form
|
|
2. Сохранить ее В ТУ ЖЕ ДИРЕКТОРИЮ, где лежат остальные файлы проекта.
|
|
3. Бросить на форму компонент TKOLForm. (Убедиться так же, что на главной форме уже лежит TKOLApplet, если нет - положить).
|
|
4. Собственно, все. Если в TKOLProject свойство AutoBuild = True (по умолчанию), то через BuildDelay микросекунд форма превратится в KOL-совместимую. Если нет, надо сделать двойной щелчок по свойству Build компонента TKOLProject (на главной форме).
|
|
|
|
V. УДАЛЕНИЕ ФОРМЫ
|
|
1. Project|Remove from prject... - как обычно
|
|
2. В главной форме выделить TKOLProject, двойной щелчок по свойству Build.
|
|
|
|
VI. ПЕРЕИМЕНОВАНИЕ ФОРМЫ
|
|
Не изменяйте имя формы, вместо этого измените свойство FormName компонента TKOLForm, лежащего на этой форме. (Главная форма тоже должна быть открыта).
|
|
|
|
VII. НАПИСАНИЕ ЗЕРКАЛЬНОГО КОДА
|
|
|
|
Если имена методов, процедур, переменных, типов, констант и т.д. будут конфликтовать с именами из VCL, добавляйте префикс <KOL.> для разрешения конфликтов.
|
|
Не используйте имена из VCL, особенно из SysUtils, Classes, Forms, Dialogs и т.д. Все, что нужно для программирования, можно найти в самом KOL, а так же в Windows.pas, Messages.pas, ShellAPI.pas. Или написать самим (либо скопировать откуда-нибудь).
|
|
Когда Вы пишете зеркальный код, обычно он размещается в обработчиках событий.
|
|
Вы можете так же добавлять любой код (требуемые процедуры, функции, переменные, константы, типы и т.д. где угодно, кроме автоматически генерируемых inc-файлов и первой секции в декларации класса зеркальной формы), а так же добавлять ссылки на внешние модули в кластерах uses.
|
|
При написании кода всегда следует помнить, что хотя он пишется для среды KOL, он должен быть синтаксически верен и в VCL. Иначе просто не дойдет до компиляции кода.
|
|
ЭТО ВАЖНО:
|
|
Для разрешения конфликта между словом Self из VCL и словом @Self в KOL, которые интерпретируются по-разному, введено специальное слово Form. В VCL-проекте (зеркале) Form - это свойство компонента TKOLForm, возвращающее Self. В KOL-проекте - это поле объекта с именем исходной формы, и является указателем на объект самой формы. Так что, для корректного обращения к свойствам формы из назначенного обработчика в обоих случаях правильно будет звучать:
|
|
Form.Caption := 'Hello!';
|
|
(В то же время старый стиль Caption := 'Hello!'; выдаст ошибку в сконвертированном KOL-проекте при попытке компиляции).
|
|
Но предлагаемое слово Form следует использовать только для доступа к свойствам формы. Для доступа к дочерним объектам формы оно не требуется (и неверно). Надо, как обычно:
|
|
Button1.Caption := 'OK';
|
|
Button1Click( Form );
|
|
конец ЭТО ВАЖНО.
|
|
Возможно создание нескольких экземпляров той же самой формы во время исполнения (run-time). По крайней мере, это полезно для динамического создания форм, которые не создаются автоматически (Project|Options|Forms, только не надо делать динамической главную форму). Используйте глобальную функцию NewForm1 (заменяя <Form1> именем своей формы), например:
|
|
TempForm1 := NewForm1( Applet );
|
|
Чтобы такое было возможным, НИКОГДА не используйте глобальную переменную, выделенную для формы при генерации проекта, если только Вы не знаете точно, зачем это надо. Используйте слово Form вместо нее.
|
|
|
|
VIII. ДОБАВЛЕНИЕ ССЫЛКИ НА МОДУЛЬ
|
|
|
|
Если необходимо использовать внешний модуль, не перечисленный в директиве uses, добавьте его как показано в приведенном отрывке:
|
|
|
|
====== НАЧАЛО ТИПИЧНОГО МОДУЛЯ, СОДЕРЖАЩЕГО ФОРМУ KOL: ========
|
|
{ KOL MCK } // Do not remove this line!
|
|
{$DEFINE KOL_MCK}
|
|
unit Unit1;
|
|
|
|
interface
|
|
|
|
uses Windows, Messages, ShellAPI, KOL {$IFNDEF KOL_MCK}, mirror, Classes, Controls, mckControls, mckObjs, Graphics,
|
|
mckCtrls {$ENDIF (place your units here->)}, <-- список имен дополнительных модулей -->
|
|
{$ELSE}
|
|
{$I uses.inc} mirror,
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
mirror;
|
|
{$ENDIF}
|
|
====== КОНЕЦ ОТРЫВКА ======
|
|
|
|
IX. ИСПОЛЬЗОВАНИЕ НАСЛЕДНИКОВ TComponent ИЗ VCL
|
|
|
|
Начиная с версии MCK v0.71, возможно использовать невизуальные компоненты, основанные на VCL, в визуальных проектах KOL+MCK. Для них будет сгенерирован код, их конструирующий, и разрушающий, присвоены события и те свойства, которые отличаются от присваиваемых в конструкторе.
|
|
Тем не менее, использование компонентов VCL в проектах, основанных на KOL, не рекомендуется, так как в любом случае они потянут за собой очень большой объем неиспользуемого кода.
|
|
В то же время, использование визуальных компонентов VCL в проекта MCK невозможно вообще. Компоненты TKOLProject и TKOLForm блокируются немедленно в случае обнаружения таких объектов на форме, что предотвращает порчу VCL-проектов в случае ошибочного бросания компонентов MCK на форму обычного VCL-проекта.
|
|
Если VCL компонент используется в проекте MCK, учтите, что:
|
|
- автоматическая генерация кода не происходит, когда свойства такого компонента изменяются или ему назначаются обработчики событий. Следует (например) двойным щелчком по компоненту TKOLProject форсировать генерацию кода после внесения каких-либо изменений в настройку чужеродного компонента.
|
|
- когда VCL компонент "брошен" на форму, Delphi добавляет ссылку на его модуль в кластер uses, но она оказывается обычно помещена между скобками {$IFNDEF KOL_MCK}...{$ENDIF}, так что проект не может быть нормально откомпилирован. Чтобы исправить это, перенесите ссылку на модуль за скобки:
|
|
..., SomeUnit {$ENDIF}; -> ... {$ENDIF} , SomeUnit;
|
|
|
|
X. АВТОМАТИЧЕСКИ ГЕНЕРИРУЕМЫЕ ФАЙЛЫ
|
|
|
|
1. В дополнение к <YourProject>.dpr, генерируются файлы:
|
|
- <YourProject>_0.inc - содержит альтернативный код инициализации приложения,
|
|
замещающий собой то, что находится в dpr-файле между
|
|
begin и end. Структура примерно следующая:
|
|
|
|
Applet := NewApplet( ... ); // если используется TKOLApplet
|
|
[ Applet.Visible := False; ] // опционально
|
|
[ Applet.OnMessage := ...; ] // опционально
|
|
|
|
{$I <YourProject>_1.inc}
|
|
|
|
{$I <YourProject>_2.inc} // автоматический, создает формы
|
|
|
|
{$I <YourProject>_3.inc}
|
|
|
|
Run( ... );
|
|
|
|
{$I <YourProject>_4.inc}
|
|
|
|
- <YourProject>_1.inc - создается пустым, если не существует. Вы можете изменять
|
|
его, помещая в него код, который сработает немедленно после
|
|
(опциональной) инициализации переменной Applet. Например,
|
|
здесь можно написать условный оператор, который предотвратит
|
|
дальнейший запуск приложения в некоторых случаях.
|
|
|
|
- <YourProject>_2.inc - генерируется автоматически, содержит код инициализации
|
|
автоматически создаваемых форм. Никогда не модифицируйте
|
|
его.
|
|
|
|
- <YourProject>_3.inc и <YourProject>_4.inc - так же, как и <YourProject>_1.inc, генерируется пустым, если не существует. Размещайте в нем свой код (любой).
|
|
|
|
тут уже просто некогда было перевести... но это не так важно:
|
|
|
|
2. For every unit with form, additional file <UnitName>_1.inc is generated automatically. You should never change it manually.
|
|
|
|
3. File uses.inc also is generated automatically and You should not alter it manually. It contains word 'uses' only, included to final code via directive {$I uses.inc}.
|
|
|
|
XI. MAINTAINANCE
|
|
For backup / copy purposes, following files are necessary to be stored to restore your project later or in another directory (on another PC):
|
|
<YourProject>.dpr
|
|
<YourProject>_1.dpr - if You altered it
|
|
<YourProject>_3.dpr - if You altered it
|
|
<YourProject>_4.dpr - -||-
|
|
<YourProject>.res - if You use app icon and altered it
|
|
<YourUnit>.pas - for every unit
|
|
<YourUnit>.dfm - for every unit with form
|
|
<YourProject>.cfg
|
|
<YourProject>.dof
|
|
other files, created specially for a project (*.rc;*.res;*.bmp;*.ico; etc.)
|
|
|
|
Files could be recreated, but desired for backup / copy:
|
|
<YourProject>_0.inc
|
|
<YourProject>_2.inc
|
|
<YourUnit>_1.inc - for every unit
|
|
<YourProject>.dsk
|
|
<YourProject>.drc
|
|
|
|
And following files You are free to remove any time You wish:
|
|
*.dcu; *.~*; *.$$$; *.exe
|
|
|
|
######################################
|
|
# #
|
|
# XII. П Р Е Д У П Р Е Ж Д Е Н И Е #
|
|
# #
|
|
######################################
|
|
1. Никогда не бросайте TKOLProject (и другие KOL-компоненты) на форму нормального VCL-проекта - они будут заблокированы и не будут функционировать.
|
|
2. В модулях полученного KOL/MCK проекта не трогайте все, что лежит между автоматически добавленными {$IF[N]DEF}...{$ENDIF}.
|
|
3. Не надо пытаться редактировать автоматически генерируемые INC-файлы.
|
|
4. Если Вы включили консоль (св-во ConsoleOut обьекта TKOLProject), НЕ ЗАКРЫВАЙТЕ ее. Просто смените значение ConsoleOut в False.
|
|
5. Сохраняйте зеркальные проекты по крайней мере в другой директории, чем обычные проекты VCL - во избежание каких-либо потенциальных совпадений имен модулей.
|
|
6. Прт обновлении до более свежей версии выполняйте Build (а не Compile!) для всех пакетов, зависящих от MCK.
|
|
6. Если у Вас на компьютере что-нибудь испортится, помните - разработчик в соответствии с лицензионным соглашением НЕ НЕСЕТ НИКАКОЙ ответственности.
|
|
|
|
XIII. РАЗРЕШЕНИЕ ПРОБЛЕМ
|
|
|
|
1. Если у вас не получилось установить MCK, прочитайте инструкцию по установке еще раз. Например, обратите внимание, тот ли пакет вы пытаетесь установить: может быть, у вас другая версия Delphi.
|
|
2. Нет никаких проблем с установкой MCK в Delphi, независимо от того, какая у вас редакция: Enterprise или Personal. У вас проблемы? Прочитайте инструкцию, пожалуйста.
|
|
3. Если при попытке компиляции вы получаете сообщение о том, что не найдены файлы ToolsAPI (DsgnIntf например), обнаруживается синтаксическая ошибка в коде (хотя вы еще не писали код), или еще что-нибудь в этом духе, прочитайте еще раз раздел "НАЧАЛО НОВОГО ЗЕРКАЛЬНОГО ПРОЕКТА". Чаще всего ошибка в том, что вы пытаетесь откомпилировать и запустить исходный проект, тогда как следовало его закрыть и открыть тот, который сформировался в результате выполнения п.п. 1-7.
|
|
4. Еще что-то не получается? Вы, наверное, не читали инструкцию. Извините :)
|
|
5. Нет, конечно, всякие вещи возможны. Но попробуйте провести чистый эксперимент. Установите Delphi заново (или на другой машине) и попробуйте сделать все согласно инструкции, шаг за шагом. Уверяю вас, все получится.
|
|
6. На всякий случай: пакет замены system.dcu не должен устанавливаться в ту же директорию, где расположены файлы самих KOL и MCK.
|
|
|
|
XIV. ДОПОЛНИТЕЛЬНО
|
|
|
|
Collapse - это технология, используемая в KOL (прежде всего с MCK) для того, еще более уменьшить код путем замены части машинного кода более компактным байт-кодом виртуальной форт-подобной двухстековой машины. MCK обеспечивает генерацию П-кода параллельно генерации Паскаль-кода для инициализации форм. Далее при включении соответствующих опций этот П-код превращается в некоторый код на ассемблере, и после компиляции в Delphi обычным образом становится исполнимым байт-кодом П-машины. Эффект уменьшения проявляется для достаточно больших проектов, так как хотя байт-код примерно вдвое меньше по размеру по сравнению с машинным, сначала должно быть добавлено некоторое количество дополнительных процедур (и в том числе эмулятор П-машины). Более подробно см. пакет Collapse на сайте.
|
|
|
|
|
|
-----------------------------------------------------------------
|
|
http://kolmck.net
|
|
vk@kolmck.net
|
|
|
|
------------------------------------------------------------------
|
|
(C) 1999-2010, by Vladimir Kladov. All rights reserved. |