Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Вниз

Не ставятся никакие пакеты   Найти похожие ветки 

 
Dy1 ©   (2007-02-19 20:58) [0]

Ошибка при попытке установки "Unit SysInit was compiled with..."
МСК 2.37 с заменой системных модулей. Возврат к стандартным добавляет 8 ошибок.


 
Vladimir Kladov   (2007-02-19 21:02) [1]

Не получилось раз, два. А инструкцию прочитать?


 
Dy1 ©   (2007-02-19 23:39) [2]


> Vladimir Kladov
> А инструкцию прочитать?

Если имеется ввиду это:
Чтобы избавиться от сообщения Unit xxxxx was... Build All сначала без замены,.. Compile
, я и говорю, что в этом случае Build All всегда ошибка и все прочие Build и Compile - тоже :(
Пробовал добавлять DesignIDE - та же фигня. Все настройки в норме (как и до глюка). Скобок  $IFNDEF KOL_MCK...$ENDIF в компоненте нет и не было.  Переустановка Делфи и КОЛ, святая вода, танцы с бубном и т.п. ничего не меняют :-7


 
Grom PE ©   (2007-02-20 00:23) [3]

Сейчас угадаю...
Из
uses Windows, Messages, ShellAPI, KOL {$IFNDEF KOL_MCK},
 mirror, Classes, Controls, mckControls, mckObjs, Graphics,
 mckCtrls {$ENDIF (place your units here->)};

что-то вылезло за {$ENDIF (place your units here->)}.
Обычно такое случается c mckCtrls.
Нужно перенести его (или другой модуль, который туда попал) на место перед ENDIF"ом.


 
Dy1 ©   (2007-02-20 07:59) [4]


> Grom PE
> Сейчас угадаю...
> ***
> на место перед ENDIF"ом

Не ставится ничего. Например baptrayicon.

unit KOLBAPTrayIcon; uses Windows, Messages, KOL;


unit mckBAPIconsRCEditor;
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ComCtrls, ImgList, Menus;


А вот здесь нормально?

unit mckBAPTrayIcon;
{$I KOLDEF.INC}
uses
 Windows, Messages, KOL, mirror, mckCtrls, Classes, Controls, Graphics,
   KOLBAPTrayIcon, mckBAPIconsRCEditor, Forms, Dialogs,
 {$IFDEF _D6orHigher}
   DesignIntf, DesignEditors, DesignConst, Variants;
 {$ELSE}
   DsgnIntf;
 {$ENDIF}

До сих пор таких проблем не было.
Похоже, что медицине про "другую версию" SysInit ничего не известно :/

Дополнение.
KOL+MCK+компоненты -- инсталлятором. Жму MirrorKOLPackageD7.dpk -- ставится. Всё, что пытаюсь поставить позже -- ошибка.


 
MTsv DN ©   (2007-02-20 10:24) [5]

Да-а-а...В.Кладова никто не услышал...а жаль...

Чтобы ошибка исчезла,удалите DCU файлы замены сис.модулей, установите компоненты, и восстановите DCU файлы...

P.S. RTFM


 
Dy1 ©   (2007-02-20 20:28) [6]


> Чтобы ошибка исчезла,удалите DCU файлы замены сис.модулей,
>  установите компоненты, и восстановите DCU файлы...
>
> P.S. RTFM

Не помогает даже без замены сис. модулей
Ставится только сам MirrorKOLPackageD7
Всё остальное: "Unit SysInit was compiled with a different version of System.LocalAlloc"


 
Vladimir Kladov   (2007-02-20 20:38) [7]

Извиняюсь, конечно, но это очень напоминает анекдот. Товарищ не читатель, товарищ писатель. Читать инструкцию совершенно не желает.


 
Vladimir Kladov   (2007-02-20 20:39) [8]

Понимаете, какая штука: если бы я МОГ сделать так, чтобы не надо было читать инструкцию, я бы так и сделал. Но в данном случае, увы, автоматика невозможна. Надо в точности выполнить так, как там написано. А не так, как подсказывает весь предыдущий накопленный опыт и интуиция.


 
homm ©   (2007-02-20 20:44) [9]

> Товарищ не читатель, товарищ писатель.
Чукча. :) Я такую версию слышал.


 
Dy1 ©   (2007-02-21 21:56) [10]

Спасибо за помощь.
Остаётся вопрос что делать с "Unit mckCtrls was compiled with a different version of KOL.PIcon"?
Предыдущий совет не помогает. Часть компонентов не ставится, но пока в них нет необходимости.
Зато впервые заработал try...except  Наверно к дождю :)

В модуле MCKMHFindReplaceDialog версии 0.92 пришлось в 3х строчках приводить не совсем понятную для меня конструкцию к PDWord, иначе не компилировалось. Ранее было то же самое и это работало.


 
mdw ©   (2007-02-21 22:13) [11]

MHFindReplaceDialog один фиг неработает, вернее диалог показывается, но и всё, используй KOLmdvDialogEx, там есть.


 
Dy1 ©   (2007-02-23 17:47) [12]


> MHFindReplaceDialog один фиг неработает, вернее диалог показывается,
>  но и всё, используй KOLmdvDialogEx

Компоненты mdv у меня не работают вообще.

И опять: при попытке скомпилить проект с MCKMHXP, который вчера работал отлично:
a) появляется сообщение "[Fatal Error] Mirror.pas(29): Unit OleCtrls was compiled with a different version of Variants.@VarFromDisp";
 Пробовал убрать Variants из папки KOL -- "[Fatal Error] SysUtils.pas(3777): Unit Variants was compiled with a different version of SysUtils.Exception.Create";
b) ListView в дизайн-тайме стал чёрным,
c) Д7 вылетает, нередко с ошибкой 216. (помню, что кто-то задавал этот вопрос, но где я это видел и что делать?)


 
Vladimir Kladov   (2007-02-24 12:45) [13]

Забудьте  про компиялцию, когда работаете с пакетами. Build и только Build. А иногда надо чистить dcu (руками) и опять делать Build, если не помогает. Все же есть в FAQ.


 
MTsv DN ©   (2007-02-24 14:35) [14]

З.Ы. А для начала, я бы установил ПОСЛЕДНЮЮ ВЕРСИЮ KOLnMCK...а не 2.37 (см. [0])


 
Dy1 ©   (2007-02-24 19:09) [15]


> З.Ы. А для начала, я бы установил ПОСЛЕДНЮЮ ВЕРСИЮ KOLnMCK.
> ..а не 2.37

Установил 2.53. И что, мне теперь всё переделывать заново??? Точки входа не найдены, ListView отображается прямоугольником как панель, Д ругается на что-то в KOL.pas и пр. :(


 
homm ©   (2007-02-24 19:15) [16]

> И что, мне теперь всё переделывать заново???
Что-то мне кажется что тебе даже это не поможет. Только в первый класс. Учится внимательно читать, а потом курить мануалы.


 
MTsv DN ©   (2007-02-24 19:40) [17]

> Что-то мне кажется что тебе даже это не поможет. Только
> в первый класс. Учится внимательно читать, а потом курить
> мануалы.

+1


 
Dy1 ©   (2007-02-24 20:28) [18]

Установил 2.63. Создал проект MCK. Сразу же ошибки:
[Error] KOL.pas(41271): Undeclared identifier: "DoDestroyAccelTable"
[Error] KOL.pas(41273): Undeclared identifier: "fAccelTable"


 
Vladimir Kladov   (2007-02-24 20:36) [19]

Некурящий, однозначно.

Мануал по установке читали? Или религия вообще не позволяет инструкцию читать? 2.53 последняя была, кстати. В инструкции четко, по шагам, как создавать проект MCK. Нешто вы компилируете проект сразу же созданный? Ну тогда вам никогда не удастся научиться.


 
Dy1 ©   (2007-02-25 00:08) [20]


> Мануал по установке читали?

Читал и делал всё как написано. С 2.37 проблемы были не такие идиотские. Да и компилировалось всё и работало.
 Те же ошибки выдаёт и прежде рабочий проект


> 2.53 последняя была, кстати

Промахнулся немного, 2.53 конечно же


 
Vladimir Kladov   (2007-02-25 10:47) [21]

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


 
Dy1 ©   (2007-02-28 20:32) [22]


> Vladimir Kladov
> Проблемы дополнительных (не моих) компонентов меня не интересуют

Их и не было, т.е. только "стандартные"

Установил версию 2.37. Двое суток отлично, теперь
Unit Variants was compiled with a different version of SysUtils.Exception.Create
 В ФАКах ничего похожего на данную проблему не нашёл, пробовал удалять DCU.
 Ошибки появлятся ниоткуда, комп просто постоял выключенным одну ночь.


 
Vladimir Kladov   (2007-02-28 20:37) [23]

Интересно, что за версия Delphi. 6 или 7, я так понял. У меня никаких проблем нет с Delphi6, по крайней мере без замены системных модулей - точно. Рекомендуется заменять системные модули в последний момент, когда уже все отлажено и работает.


 
Dy1 ©   (2007-03-02 00:13) [24]


> Рекомендуется заменять системные модули в последний момент,
>  когда уже все отлажено и работает

Те же ошибки и без замены.


 
mdw ©   (2007-03-02 00:57) [25]

Даже интересно. Если аська есть, стучи (78-825-365), завтра после 15.00, давай вместе попробуем все установить. Я правда компилю новые версии батчиком, не запуская делфи, но разберемся.


 
Vladimir Kladov   (2007-03-02 07:59) [26]

Для Delphi7 существует обновление. Без обновлений работать не рекомендуется. Для Delphi 6 два обновления. Я предпочитаю 6 с обновлениями - она устойчивее. Да и тормозов меньше (а меньше всего мне нравятся новые "стильные" кнопки в D7, но это дело вкуса и плохого зрения).


 
Dy1 ©   (2007-03-02 11:33) [27]


> Для Delphi7 существует обновление

А где взять? Если по ссылке, кот. была недавно, то уже установил

SysUtils.pas(3755): Unit Variants was compiled with a different version of SysUtils.Exception.Create
Так что же делать с вечно глючным Variants ? (сдвинулся остатками ума и заговорил одностишиями :7 )  Д7 ругается и на VCL-ный и на KOL-кий


 
mdw ©   (2007-03-02 12:14) [28]

Снести Delphi и установить заново и не торопясь.


 
Vladimir Kladov   (2007-03-02 13:58) [29]

А вы часом замену Variants.pas не подкладывали в доступную директорию? Этого нельзя делать. Он должен лежать в отдельной папочке, и на нее путь прописывать только в приложении, когда уже все работает, надо. Экономия от него всего 1К, а при отладке он и вовсе не нужен.


 
Barloggg   (2007-03-02 16:21) [30]

да, да, я тоже столкнулся с этим variants.pas когда решил побаловаться с заменой, нифига не вышло, тогда я плюнул и забыл.
в результате перестали работать все имеющиеся в наличии VCL проекты.

короче правильным решением был поиск всех файлов с именем variants.pas и variants.dcu по всему диску (ну конкретно директории дельфи и директории проектов)

из всех найденных первых оставить только правильный, остальные убить.
из всех найденных вторых убить вообще всех.


 
domo22   (2007-05-29 11:59) [31]

Хотя Кладов и написал, что установка чужих компонентов его не заботит, все-таки как правильно устанавливать (и удалять) сторонние компоненты? Авторы чаще всего не пишут как это делать, а это нужно почти каждому. Напишите пожалуйста развернутый пошаговый ответ. Да и в Чаво его нужно добавить.


 
domo   (2007-05-31 11:33) [32]

У меня несколько вопросов. Помогите пожалуйста. Учитывая, что я далеко не профи, а просто пишу немного на Паскале, дайте пожалуйста ответ поконкретнее, лучше пошагово или с примером.

1 - Не устанавливаются доп. компоненты КОЛ в Дельфи5. Когда-то все работало, но с год я не работал и все порушилось. Конечно, я понимаю, что это я неправильно их устанавливаю, а не ошибки в КОЛ или в компонентах, но помогите разобраться. Я выполнил автоматическую установку КОЛ версии 28 октября 2006, все доп. компоненты записались в каталог c:\Borland\Delphi5\KOL\controls\*.*, c:\Borland\Delphi5\KOL\utils\*.* и т.п. В этих каталогах есть либо файлы *.dpk, либо *.pas. Как их устанавливать? Вот, н-р, BAPFileBrowser от Бартова при попытке открыть файл c:\Borland\Delphi5\KOL\controls\filebrowser\BAPFileBrowserD5.dpk выдает окно с опциями "Компилировать", "Установить" и др. Пробовал нажимать и "Компилировать" и "Установить" и "Построить" не проходит, дает ошибки:

[Ошибка] KOLBAPFileBrowser.pas(53): Необъявленный идентификатор: "PDirChange"
[Ошибка] KOLBAPFileBrowser.pas(290): Operator not applicable to this operand type
[Ошибка] KOLBAPFileBrowser.pas(342): Необъявленный идентификатор: "NewDirChangeNotifier"
[Ошибка] KOLBAPFileBrowser.pas(342): Необъявленный идентификатор: "fncFileName"
[Ошибка] KOLBAPFileBrowser.pas(342): Необъявленный идентификатор: "fncDirName"
[Ошибка] KOLBAPFileBrowser.pas(342): Необъявленный идентификатор: "fncAttributes"
[Ошибка] KOLBAPFileBrowser.pas(343): Not enough actual parameters
[Ошибка] KOLBAPFileBrowser.pas(424): Несовместимые типы: "TFindFileData" и "_WIN32_FIND_DATAA"
[Ошибка] KOLBAPFileBrowser.pas(511): Несовместимые типы: "KOL_String" и "String"
[Ошибка] KOLBAPFileBrowser.pas(546): Несовместимые типы: "TFindFileData" и "_WIN32_FIND_DATAA"
[Ошибка] KOLBAPFileBrowser.pas(664): Несовместимые типы: "TFindFileData" и "_WIN32_FIND_DATAA"
[Фатальная Ошибка] BAPFileBrowserD5.dpk(35): Не могу компилировать используемый модуль "KOLBAPFileBrowser.pas"

2 - Мне нужно, нажав кнопку на форме, выбрать текстовый файл и его содержимое выдать построчно в окошке на той же форме, чтобы дальше потом обрабатывать. Как это сделать средствами КОЛ?

3 - В.Кладову: в инструкции по переустановке КолМск для Д5 (а может и для др.версий тоже) неверно написано:
"3. Открыть MirrorKOLPackage.dpk в Delphi IDE и в выпадающем меню на самом пакете (разделитель под панелью кнопок) нажать "Build"".
Нужно:
"3. Открыть MirrorKOLPackage.dpk в Delphi IDE, щелкнуть правой кнопкой мыши на самом пакете (ниже разделителя под панелью кнопок) и в выпадающем меню нажать "Build"".

Исправьте пожалуйста. И кстати, нужно убрать лишнее слово "если" там же.

4 - Есть ли книги по программированию на КОЛ типи как книги по Дельфи? Я скачал книгу В.Кладова, полезная книга, но раздел  "Программирование на КОЛ" не содержит ни одного!!! примера. Интересно, есть ли в природе еще книги по программированию, которые без реальных примеров?


 
mdw ©   (2007-05-31 11:44) [33]


>  Я выполнил автоматическую установку КОЛ версии 28 октября
> 2006,...
1.

А это что за зверь такой?
Скачайте последнюю версию с сайта  http://www.kolnmck.ru/ , тоже само касается и компонентов.


> Пробовал нажимать и "Компилировать" и "Установить" и "Построить" ..

При установке KOL компонентов ВСЕГДА - Build, потом опять  Build для KOL

BAPFileBrowser я собственоручно исправлял и 7на сайте лежит рабочая версия.

2. Читайте документацию, ну или хотя бы купите что-то вроде "Delphi для чайников".

3,4 . Слов нет. Просто фигею.


 
=BuckLr=   (2007-05-31 16:33) [34]


> 3,4 . Слов нет. Просто фигею.

:) :) :)

А я тоже чайник, знаете ли... Но и для меня совершенно очевидно, что п.3(1) = п.3(2). Уж не потому ли у Вас, mr. domo22, ничего не работает, коль скоро Владимир Кладов сформулировал предложение не так, как Вам хотелось? :) А если  книгу о КОЛ до конца прочитать? Так это ж получится, что господина Кладова убить мало :) :) :)

А я не фигею, я ржу просто :)


 
domo   (2007-05-31 16:36) [35]

1. Автоустановку компонентов КОЛ нашел уже и не помню где. Сам же КОЛ взял с сайта 3 дня назад, ну хорошо, сейчас еще раз перекачаю.
BAPFileBrowser установился автоматом, сейчас перекачаю.

Спасибо, теперь вроде ясно - сначала "Построить" для компонента, потом "Построить" для КОЛ. А я для КОЛ не делал, только для компонента. Вечером попробую.

2. Есть у меня, но слишком уж много нюансов. Конкретики хочется. А в уроках по КОЛ как было все год назад, так и осталось. Так что просьба остается - да и что, несколько строчек кода - это уже проблема?

3,4. Я тоже. Особенно когда вижу ошибки на которых спотыкается куча людей, форум забит вопросами, а их упорно не желают исправить, объясняя, что "умные и так догадаются".


 
domo   (2007-06-01 12:24) [36]

1. Попробовал, не прошло. Ошибок конечно меньше (одна), но результат тот же - не устанавливается, останавливаясь на строке
Result.SetOnLVData(Result.NewOnLVData);

и дает сообщение:

[Замечание] BAPFileBrowserD5.dpk(31): Unit "KOLadd" implicitly imported into package "MirrorKOLPackage"
[Ошибка] KOLBAPFileBrowser.pas(511): Несовместимые типы: "KOL_String" и "String"
[Фатальная Ошибка] BAPFileBrowserD5.dpk(35): Не могу компилировать используемый модуль "KOLBAPFileBrowser.pas"

Может еще что-то подскажете? Хотелось бы сегодня установить. Делал так:
- в меню Д5: файл - закрыть все
- в меню Д5: файл - открыть - c:\Borland\Delphi5\KOL\controls\BAPFileBrowserD5.dpk
- в открывшемся окне: Построить

Или все-таки сносить КОЛ? Кстати, как именно? А может надо было еще перед "Построить" какие-то Directories/Conditionals вручную прописать?


 
mdw ©   (2007-06-01 12:58) [37]


> Или все-таки сносить КОЛ?

Да именно снести KOL и для начала поработать просто на делфи.


 
domo   (2007-06-01 14:55) [38]

Я бы и рад, но само по себе, к сожалению, это не имеет смысла, т.к. я сейчас работаю именно в КОЛ (чистый КОЛ работает). Мне нужно установить несколько доп. компонентов. Не компоненты для чистого д5, а компоненты КОЛ под Д5. BAPFileBrowser и неск. других. Так что если можете - подскажите.


 
=BuckLr=   (2007-06-01 15:55) [39]


> не устанавливается, останавливаясь на строке
> Result.SetOnLVData(Result.NewOnLVData);

А там на 83 строчке в procedure NewOnLVData надо KOLString заменить на KOL_String...


> Может еще что-то подскажете? Хотелось бы сегодня установить.
>  Делал так:


Не надо так :) Просто сделай как я написал

> А может надо было еще перед "Построить" какие-то Directories/Conditionals
> вручную прописать?

Конечно надо. Как по-твоему, Делфи сама будет искать твои компоненты? Она же не знает, где у тебя что

Ну такие вот мои ламерские советы...


 
=BuckLr=   (2007-06-01 16:02) [40]


> какие-то Directories

Тока не в пакет! В делфи саму


 
domo   (2007-06-01 17:44) [41]

Спасибо за советы, пойду пробовать


 
domo   (2007-06-04 15:59) [42]

1. Попробовал и дожен сказать =BuckLr=  еще раз спасибо - твой совет точно в десятку:
после применения этого совета компонент установился. Может это и еще кому-то поможет.
Но кто оставил такой "камень преткновения" и почему ошибку не исправили? Хотя если судить по стилю некоторых,
то и неудивительно: горстка желания исправлять неточности, ошибки и помогать тем кто просит помощи
и гора желания "ржать" и "просто фигеть".

2. Здесь кто-то подскажет? У меня не получается. Текст из файла есть только в Memo1,
а в ListBox1 пусто. Кроме того нет гориз.лифта в ListBox1. А в Memo1 текст есть, но не
правится, хотя атрибута "только чтение" я не ставил. И в панель статуса StatusText[2] не
хочет ничего писать, почему? Конечно, для кого-то это очень просто, так я у них и спрашиваю -
вам просто, подскажите другим.
Делаю так:

type
   ListBox1: TKOLListBox;
   OpenSaveDialog1: TKOLOpenSaveDialog;
   Toolbar1: TKOLToolbar;
   Memo1: TKOLMemo;
var
 NicDicFile, ExtRus: KOLString;
implementation
procedure TForm1.ProgStartHere(Sender: PObj);{Старт обработки}
var
s: string;
begin
Form1.Form.StatusText[0]:="Строка статуса создана ";
end;

procedure TForm1.ToolbarClicked(Sender: PObj);
var
s: string;
sList: pStrList;
DicList: TStrList;
List: TAList;
begin//ToolbarClicked
if Toolbar1.RightClick then begin{3} beep (150, 100) end{3}
else begin{4}
 case Toolbar1.CurIndex of
  0: begin{c5}
   if OpenSaveDialog1.Execute then
    begin
     NicDicFile:=OpenSaveDialog1.Filename;
     sList:= NewStrList;
     if sList.LoadFromFile(NicDicFile) then begin{if1}
      Memo1.Text:= SList.Text;
      ListBox1.Text:= SList.Text;
     end{if1};
     SList.Free;
     s:=Int2Str(ListBox1.Count);
     Form1.Form.StatusText[2]:=^s;
    end else beep (150, 100);
    end{c5};
  1: beep (2000, 10);
  2: beep (3000, 10) ;
 16: Form.Close;
 end{case Toolbar1.CurIndex};
end{4};
end;//ToolbarClicked

4. А здесь что, других уроков кроме тех 13, что были на сайте по КОЛ пару лет назад, нет?


 
=BuckLr=   (2007-06-04 20:02) [43]

Мы ржём, потому что ржачно и фигеем потому что офигительно :)

Ты не обижайся, но тебе и правда под всл надо ещё поработать. Вот, к примеру, нафига тут
Form1.Form.StatusText[2]:=^s;
когда надо
Form1.Form.StatusText[2]:=Char(s);
И не будет работать, коль с приведением типов проблемы...

А так:
ListBox1.Text:= SList.Text;
строки в листбокс не добавляются. Смотри описание метода
{* |<#edit>
      |<#memo>
      The same as Caption. To make more convenient with Edit controls. For
      Rich Edit control, use property RE_Text. }
значит, метод только для полей редактирования, а не для листбокс, комбобокс и иже с ними, это списковые объекты. Добавлять надо методом Add. Тебе надо организовать цикл, в котором будешь добавлять строки по очереди.

Вот ещё. Зачем обрабатывать щелчок на самом тулбаре, если проще обрабатывать щелчок на кнопке, которая на тулбаре?


 
domo   (2007-06-05 14:51) [44]

2. За советы спасибо, буду разбираться. И какие там обиды, просто я считаю, что ошибки и неточности лучше исправлять, а если просят помощи - лучше помогать. Ну, а кто-то считает наоборот, пусть...
С приведением типов и правда проблемы. Цикл я попробую организовать, но будет ли это быстро - там файл из ~150 тыс строк... Обрабатываю щелчок на самом тулбаре я потому, что так мне вроде проще (хотя может это не так). И как в ListBox1 включить гориз.лифт?


 
=BuckLr=   (2007-06-05 17:21) [45]

Полоса прокрутки - что-то вроде LB_SETHORIZONTALEXTENT, поищи. А насчёт скорости перебора, так это вроде не проблема. Хотя я тоже не спец, не уверен, что это так...


 
domo   (2007-06-07 16:34) [46]

1. Никто не ответил как устанавливать компоненты где нет *.dpk, а только файл KOLxxx.pas или KOLxxx.pas и MCKxxx.pas. Я попробовал создать новый пакет, добавить туда файлы KOLxxx.pas и MCKxxx.pas, откомпилировать этот пакет и затем установить его. Но не получилось - фатальных ошибок вроде и не заметил, а новых значков на панелях компонентов не появилось. Как правильно делать установку и как проверить, что установка успешна?

2. Попробовал, но компилятор сказал, что, видно, проблемы с приведением типов есть не только у меня. Работает лишь такой вариант, возможно так и надо:
  s:="Обработано строк: "+Int2Str(ListBox1.Count);
  Form1.Form.StatusText[1]:=PChar(s);

Цикл сделал, даже два (какой из них правильный?):
      for i:=0 to sList.Count-1 do ListBox1.Add(sList.Items[i]);
      for i:=0 to sList.Count-1 do ListBox1.Items[i]:=sList.Items[i];
Но я оказался прав - очень медленно работает - около 20 сек (а в Memo1 - за 2 сек). Можно ли ускорить этот процесс, хотя бы в 4-5 раз? Специалисты, подскажите.

С обработкой нажатий кнопок (а не панели) я не разобрался, но заметил, что подсказки при наведении мыши на другие 16 кнопок те же, что и при наведении на первую. Проверил свойство панели tooltips - там 17 строк подсказок, ShowTooltips установлено в true, а подсказок нет (есть, но тe же, что для первой кнопки). Посоветуйте, как исправить.

Свойства LB_SETHORIZONTALEXTENT и даже LB_SETHORIZONTAL найти не смог. Обыскал все файлы *.pas в ветке КОЛ и не нашел. Как добавить гор. лифт в ListBox?


 
=BuckLr=   (2007-06-07 17:01) [47]


>  проблемы с приведением типов есть не только у меня

У меня проблем нет. Если речь про PChar вместо Char, то думать надо головой, что такое один символ и что такое целая цепочка.


> Но я оказался прав - очень медленно работает

Кажется это действительно лажа. Как ускорить до уровня мемо, я думаю,  посмотреть, как само мемо это делает (в самом loadfromfile кажется)


> Свойства LB_SETHORIZONTALEXTENT и даже LB_SETHORIZONTAL
> найти не смог

И не найдёшь. Этоне из КОЛ. А вообще я торможу, в кол есть для этого loHScroll. Правда, у меня что-то не заработало. Раньше, помнится, всё было нормально. Владимир, не проверите ли эту опцию? И, кстати, я нашёл проблемку с генерацией в МСК - вместо loHScroll генерируется loHScrll. Приходилось каждый раз "о" добавлять :)


 
=BuckLr=   (2007-06-07 17:05) [48]


> очень медленно работает

Ах, да. У контролов есть BeginUpdate и EndUpdate.


 
domo   (2007-06-11 17:07) [49]

Да, loHScroll и правда не работает. А что про BeginUpdate и EndUpdate, я что-то не понял, объясни, пожалуйста.


 
SergeR ©   (2007-06-11 17:56) [50]

RTFM.
KOL.pas:

procedure BeginUpdate;
{*   |<#treeview>
      |<#listview>
      |<#richedit>
      |<#memo>
      |<#listbox>
      Call this method to stop visual updates of the control until correspondent
      EndUpdate called (pairs BeginUpdate - EndUpdate can be nested). }


 
domo   (2007-06-12 14:03) [51]

Так я вроде же пробовал вызывать
BeginUpdate;
при вызове
ListBox1.Add(sList.Items[i]);
- скорость осталась низкой (т.е. прежней). Может что не так делаю? Объясните, как правильно (когда) вызывать этот метод? И даже если я ничего не вызываю, ListBox1 (и вся прога) перестает реагировать на что-либо до окончания добавления всех строк в ListBox1 (около 20 сек).


 
ANTPro ©   (2007-06-12 14:53) [52]

> [51] domo   (12.06.07 14:03)

Applet.ProcessMessages


 
Vladimir Kladov   (2007-06-12 17:57) [53]

Список list box больше чем 100 элементов - это несуразица. И если уж так сильно хочется, есть виртуальный list box. Еще лучше использовать виртуальный list view, для него уже даже событие готово (OnLVData).


 
domo   (2007-06-13 15:00) [54]

Сильно мне не хочется, просто надо же где-то строки прокручивать. Думал, что в  listbox лучше всего. Что ж, попробую теперь по другому, может выйдет. А что с гор. лифтом?


 
Vladimir Kladov   (2007-06-13 20:49) [55]

list box - это для совместимости, с времен Win3.1. С выходом 95 MS рекомендовал переходить на list view.


 
=BuckLr=   (2007-06-13 23:14) [56]


> С выходом 95 MS рекомендовал переходить на list view.

Уже лет 12 прошло, и всё никак не перейдут :) МС вааще много чего советует, если ко всему прислушиваться... Но я согласен с тем, что листвью лучше - с ним просто легче работать, а возможностей хоть отбавляй. И никаких ограничений на строчки. Самое то, что тебе нужно (2 domo)


 
domo   (2007-06-14 11:31) [57]

2. Попробовал, но не получилось. Не работал я раньше с виртуальными списками, поэтому прошу тех, кто работал, дайте пример создания списка и работы с OnLVData.
Пока у меня стоит только такое:

listviewMy: pControl;
   listviewMy:=NewListView(form, lvsList, [lvoownerdata, lvoRowSelect, lvogridlines], nil,nil,nil).SetPosition(290, 70).SetSize(140, 120).BringToFront;

1. Почему-то слетел КОЛ. Делал так:
- скачал вчера kol_mck.7z с kolnmck.ru
- скопировал все файлы оттуда (кроме оканчивающихся на d2, d3, d4, d6, d7) в папку с КОЛ
- в Д5 закрыл все и открыв MirrorKOLPackage.dpk нажал "Построить"
- на вопрос Д5 "Сохранить изменения в MirrorKOLPackage.dpk?" нажал Нет.

Ошибок не было, кроме сообщения, что ранее установленных доп.компонентов BAPFileBrowser теперь почему-то не будет.
После этого вкладки КОЛ и КОЛ_компоненты (там были BAPFileBrowser и BAPDriveBox) исчезли и проект перестал компилироваться. К сожалению, после этого я запаниковал и начал нажимать все подряд:  "Построить", "Компилировать", "Установить", менять Опции пакета. В результате вкладка КОЛ появилась, доп.КОЛ_компоненты - нет, а проект стал работать. Однако, я не успел заметить, что же именно такого правильного я сделал,  поэтому прошу помощи, а именно - объясните, что должно быть в Опциях проекта MirrorKOLPackage.dpk перед тем, как нажимать "Построить" или "Установить". Именно _перед_, а не потом, особенно поля в Directories/Conditionals: Unit output directory, Search path, Conditional defines, Unit aliases, может еще что (у меня они все пустые). И надо ли в конце установки сохранять изменения в MirrorKOLPackage.dpk (или другом пакете)?

Кстати, при этих экспериментах я выяснил (оказывается, я это записал), что за версия КОЛ у меня стоит и где я ее взял  - кто-то раньше у меня спрашивал. Вот: пакет koldistro-0.11.exe с сайта http://heanet.dl.sourceforge.net/sourceforge/xsdnyd/


 
Vladimir Kladov   (2007-06-14 15:39) [58]

build. Читайте FAQ.


 
domo   (2007-06-14 17:49) [59]

1. Кладову В: Дайте же наконец ссылку на этот неуловимый FAQ. А то в моем FAQ "Часто задаваемые вопросы о KOL и MCK" написано только:

"Не забудьте также указать в опциях пакета "Design time only" и "Rebuild as needed" - это касается в том числе любой другой версии Delphi (начиная с D3)."

Так я об этом и не спрашиваю, я так и делаю. А об Unit output directory, Search path, Conditional defines, Unit aliases - о чем я спрашиваю - там ни слова.

2. Может ли кто-нибудь помочь в этом вопросе и написать несколько строчек примера работы? Или, если очень не хочется, дайте хотя бы ссылку на FAQ где описана работа с виртуальным ListView и событием OnLVData, попробую разобраться.

для =BuckLr=: я понял, что мне это подойдет, но с примерчиком я пойму гораздо лучше...


 
ANTPro ©   (2007-06-14 20:34) [60]

> [59] domo   (14.06.07 17:49)

http://www.kolnmck.ru/ - тебе этого мало?


 
Vladimir Kladov   (2007-06-14 22:27) [61]

А об Unit output directory, Search path, Conditional defines, Unit aliases - о чем я спрашиваю
Об этом-то зачем спрашивать? Установка пакета в Delphi обычная. Просто ничего не трогайте, про что не написано. Search path разве что указать надо, если он у вас отличается от C:\kol, так это и так понятно. Меня вводят в недоумение программисты, ставящие компонент, и не знающие, что делать, когда Delphi выводит сообщение об ошибке типа "файл xxx.dcu" не найден. Какие мануалы нужны, художественная литература, чтобы постичь элементарное?

Другое дело, что мало кто знает даже из тех кто любит  ставить подряд на всякий случай десятки пакетов (надо-не надо. Как-то в одной конференции встретил такой вопрос от "программиста" с позволения сказать: у него больше 999 компонентов в линейку ставиться не захотелось, то был кажись еще Delphi3), что потом делать, когда несколько пакетов увязаны друг на друга, и из-за ребилда одного вдруг выгружаются повязанные с ними.

Ответ давно найден (для MCK работает). Все модули - в один пакет, и после обновления - Rebuild. О том, что нужен именно Build, сказано в инструкциях к MCK, русской и английской. И это надо бы в FAQ внести, но вот незадача. FAQ - это список вопрос-ответ. Какой такой вопрос должен соответствовать ответу, не совсем понятно. "У меня не получается..." что не получается-то? Если все по инструкции, то все как раз получается. Если действовать осторожно, и начать работать только с одного пакета MCK, то проблем коллизий вообще не возникает. Я бы озаботился сей проблемой, но мне как-то основного пакета по самое не хочу для работы хватает. Даже если очень надо, то вовсе нет надобности ставить доп. компоненты как пакеты. Их и в Run-time создать можно всегда. Я так и делаю, когда какой-нибудь trackbar потребуется. Чтобы GRushControls задействовать, с ToGRush можно MCK-часть от GRush и не ставить. Чем меньше на линейке компонентов, тем Delphi быстрее грузится (и меньше жрет памяти, и шустрее работает) - давно известный факт.


 
homm ©   (2007-06-14 22:48) [62]

> Какой такой вопрос должен соответствовать ответу, не совсем
> понятно. "У меня не получается..." что не получается-то?

1) Я устанавливаю версию поверх старой. При работе все падает.
2) Я работал с чистым КОЛ, решил установить МСК, еперь у меня все падает.
3) Я поставил КОЛ и МСК, но после компиляции программа весит на 20 Кб больше, чем написано в предъидущем вопросе про размер получившехся испоняемых хайлов.


 
Vladimir Kladov   (2007-06-15 16:45) [63]

Еще раз попробую объяснить. Я не могу писать рецепт на исправление ошибки, которой сам не видел. У меня ничего не падает. И размер одинаковый, независимо от наличия MCK, в приложении без MCK (приложение MCK тоже должно компилироваться одинаково без MCK, но я не пробовал). И получается: есть ответ - делайте Build, а не Compile, если переходите от проекта к проекту, от проекта к пакету, от проекта к пакету. В Книге о KOL я об этом написал и рахэяснил причину: Delphi не видит необходимости пересобрать dcu-файл, хотя такая необходимость есть, вот и все.


 
domo   (2007-06-15 16:57) [64]

Спасибо, я попробую не трогать то, о чем не написано. Но все-таки так стало гораздо понятнее, когда явно указано - что трогать, а что не трогать. А то всё "смотрите в FAQ", FAQ, а выясняется, что в том FAQ и нет этого.

ANTPro ©: Это слишком неконкретно, такой ответ на вопрос любой напишет. Конкретнее, пожалуйста.

И еще я спрашивал, почему подсказки для кнопок на панели инструментов все одинаковые - как для первой (см. выше). Ответьте, пожалуйста.


 
Vladimir Kladov   (2007-06-15 19:10) [65]

я спрашивал, почему подсказки для кнопок на панели инструментов все одинаковые

Не заметил такого вопроса. Вообще во многих форумах есть требование: 1 вопрос в теме. Как раз чтобы не пропускать мимо.

Ну, у меня подсказки разные, это точно. Вся штука в том, что тулбар можно настраивать очень разными способами. Я, например, предпочитаю надписей не делать, а надписи использовать как подсказки. Расскажите, как вы делаете.


 
domo   (2007-06-16 13:17) [66]

> Вся штука в том, что тулбар можно настраивать очень разными способами

Конечно. Я понимаю, что я делаю что-то неправильно (иначе и не спрашивал бы). Я делаю так:
- бросаю на форму компонент КОЛтулбар
- нажимаю кнопку Далее (с тремя точками), справа от свойства buttons для создания своих кнопок
- нажимаю кнопку Add, ввожу название своей кнопки и ВВОД.  Повторяю для каждой кнопки
- нажимаю Apply и закрываю окно Toolbar1 buttons
- меняю свойство showTooltips на true
- нажимаю Далее (с тремя точками) справа от свойства tooltips и ввожу столько строк подсказок, сколько создал кнопок
- запускаю прогу, а подсказка только одна (первая строка из tooltips, даже почему-то не все строки) для всех кнопок (т.е. это получается однострочная подсказка для всей панели КОЛтулбар, а не для кнопок на ней, как я ожидал). А как для каждой кнопки свою подсказку?

Но это еще мелочи, вот у меня не получается работа с виртуальным ListView (с listBox все работает, но медленно, да и Вы говорите, что это неправильный подход). Понятно, что нужно определить переменные нужного типа, инициализировать список (выделить память, указать какого типа данные там будут и как должен список выглядеть), заполнить его строковыми данными (они у меня читаются из файла и их около 150 тыс) и вывести список на форму, чтобы он был виден пользователю. Но как это сделать? Нужен пример, не работал я раньше с виртуальными списками.
Можете помочь?


 
имя   (2007-06-18 14:31) [67]

Удалено модератором


 
имя   (2007-06-18 14:32) [68]

Удалено модератором


 
имя   (2007-06-18 14:32) [69]

Удалено модератором


 
имя   (2007-06-18 14:32) [70]

Удалено модератором


 
Vladimir Kladov   (2007-06-18 18:37) [71]

Tooltips я поправил. До этого работал tooltip на самой кнопке.

Виртуальный list view - проще не бывает. Установить lvoOwnerData, назначить OnData и вернуть там Txt и прочие данные, от номера строки и номера колонки. Во время работы присвоить LVCount, чтобы list view "знал", сколько спрашивать. Храните строки где хотите. Хотя бы в StrList"е.

Нюанс. Если LVCount надо менять на ходу (lvsDetail, lvsDetailNoHeader), может проявляться бага от MS (проявляется и в VCL): первые строки могут оказаться пустыми. Чтобы не происходило такого, надо сначала очистить list view (LVCount := 0) и Update сделать, потом устанавливать новое значение. Еще помогает временная смена вида отображения.

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


 
Galkov ©   (2007-06-18 20:15) [72]

Да и сегодня нормальная погода...


 
domo   (2007-06-19 11:08) [73]

2. Спасибо за ответ, пойду экспериментировать с tooltip и виртуальным списком. Я понимаю, из-за постоянной занятости писать примеры Вам особо некогда, надеюсь, если Вы говорите, что виртуальный список - это просто, то я смогу это сделать по Вашим подсказкам. Пока же я сделал обычный listview вот так:

var  ListView2: TKOLListView; i: integer; sList: pStrList;

  ListView2:=NewListView (Form, lvsDetail, [lvoRowSelect, lvoGridlines], nil, nil, nil).SetPosition(290,72).SetSize(180,130).BringToFront;
  ListView2.LVColAdd("N строки", taRight, 50);
  ListView2.LVColAdd("Сама строка", taLeft, 150);
  ListView2.BeginUpdate;
  for i:=0 to sList.Count-1 do if sList.Items[i][1]<>"/" then begin{i1}//если не комментарий, добавить в список
   ListView2.LVItemAdd("");
   ListView2.LVItems[ListView2.LVCount-1, 0] := int2str(ListView2 .LVCount); //нумерация строк
   ListView2.LVItems[ListView2.LVCount-1, 1] := sList.Items[i]; //сами строки (из sList, читаю из файла)
  end{i1};
  ListView2.EndUpdate;
  ...
  ListView2.Free;

К сожалению, сделал на чистом КОЛ, т.к. с зеркалом МСК для ListView разобраться не смог. Кроме того, пользоваться им все-равно сложно, т.к. он такой же медленный, как и тот ListBox1, что Вы критиковали раньше. Одно хорошо - есть гор.лифт. Кстати, Вы не ответили про гор.лифт в ListBox, где он там?

1. И еще про установку. Я перекачал FAQ, но туда так и не добавлено Ваше

"Search path разве что указать надо, если он у вас отличается от C:\kol" и то, что в настройках Conditional defines, Unit aliases "просто ничего не трогайте".

Почему бы все-таки явно не указать это в ФАК, ведь посмотрите сколько людей (не программистов, конечно) спотыкается на этой установке-переустановке. Или Вы просто не успели?

Также очень интересно Ваше замечание "Все модули - в один пакет, и после обновления - Rebuild". У меня есть несколько модулей, которые я хотел бы ставить всегда, сразу с КОЛ-МСК и чтоб при всех обновлениях КОЛ они сохранялись. Учитывая, что Вы говорите, что для того, чтобы внести вопрос в ФАК, его надо сформулировать, попробую сформулировать:

У меня есть любимые пакеты KOLxxx.pas и KOLyyy.pas, а также их зеркала MCKxxx.pas и MCKyyy.pas. Я хочу, чтобы они устанавливались вместе с КОЛ/МСК и появлялись в Дельфи на той же вкладке, что и стандартные компоненты КОЛ/МСК. Как это сделать?

Ответьте, пожалуйста. Уверен, многие будут Вам благодарны.


 
Дмитрий К ©   (2007-06-19 14:19) [74]

domo, взгляните на этот код
program VirtLV;

uses
 windows, KOL;

type
 PForm1 = ^TForm1;
 TForm1 = object(TObj)
   form, lv: PControl;
 public
   procedure lvOnLVData(Sender: PControl; Idx, SubItem: Integer;
             var Txt: KOL_String; var ImgIdx: Integer; var State: DWORD;
             var Store: Boolean);
 end;

var Form1: PForm1; sl: PStrList;

procedure NewForm1(var Result: PForm1; AParent: PControl);
begin
 New(Result, Create);
 with Result^ do
 begin
   form:=NewForm(AParent, "VirtLV").SetSize(400,300);
   applet:=form;
   sl:=NewStrList;
   form.add2autofree(sl);
   lv:=NewListView (form, lvsDetail, [lvoRowSelect, lvoGridlines, lvoOwnerData], nil, nil, nil).SetAlign(caClient);
   lv.LVColAdd("N строки", taRight, 80);
   lv.LVColAdd("Сама строка", taLeft, 220);
   lv.OnLVData:=lvOnLVData;
 end;
end;

{ TForm1 }

procedure TForm1.lvOnLVData(Sender: PControl; Idx, SubItem: Integer;
 var Txt: KOL_String; var ImgIdx: Integer; var State: DWORD;
 var Store: Boolean);
begin
 case SubItem of
   0: Txt:=int2str(Idx);
   1: Txt:=sl.Items[Idx];
 end;
end;

begin
 NewForm1(Form1, nil);
 sl.SetText(StrLoadFromFile(GetWindowsDir+"win.ini"), false);
 form1.lv.LVCount:=sl.Count;

 run(applet);
end.


 
domo   (2007-06-20 15:24) [75]

Я взглянул, и даже виртуальный список создал. Что можно сказать? Мой массив из сотен тысяч строк этот код съедает за доли секунды. Скорость просто поразительная! Огромное спасибо за пример.

Но есть несколько вопросов. Они, наверно, мелкие для Вас, может не захотите отвечать, но я все-таки спрошу, если есть возможность - ответьте пожалуйста:
- где и когда разрушается список sl? В form.add2autofree(sl) при закрытии программы? А если мне надо раньше, то вместо этого - sl.Free?
- что значит "false/true" из sl.SetText(StrLoadFromFile(GetWindowsDir+"win.ini"), false);?
- мне надо только строки - не комментарии, так я должен делать

case SubItem of
 0:
 1: if sl.Items[idx][1]<>"/" then Txt:=sl.Items[Idx];
end;

или

var sL2: pStrList; i,j: integer;
sL2:=NewStrList;
 j:=0;
 for i:=0 to sL.Count-1 do if sL.Items[i][1]<>"/" then begin{i2}
  sL2.Items[j]:=sL.Items[i];
  inc(j);
 end{i2};

или как?

- если я изменю какую-то строку / sL.Items[i]:=myString; / или добавлю строку / sL.Add(myString); / - как обновить список на форме или это произойдет автоматически?

- мне нужно отсортировать строки, удалить дубликаты - я должен сам писать эти функции (в принципе, это несложно для меня) или уже в КОЛ есть стандартные (может AnsiSort() работает?) и их нужно только подключить или как-то вызвать?

- это снова список строится только на КОЛ при выполнении, из-за этого сложно расположить его на форме - он ездит куда хочет. Если у меня на форме KOLTabControl с двумя закладками и этот список должен быть только не первой закладке как его привязать туда?


 
Дмитрий К ©   (2007-06-20 16:12) [76]

Список разрушается при уничтожении формы. Да, sl.Free. Только не уничтожайте список пока не уничтожен ListView к которому этот список привязан.

procedure SetText(const S: string; Append2List: boolean);
если Append2List = true, то строки добавляются к списку, в противном случае заменяют содержимое.

Сначала нужно избавиться от комментариев, т.к. количество строк ListView определяется количеством строк в списке.

Чтобы отразить изменения  списка в ListView нужно сделать
ListView.LVCount := sl.count;

У списка есть метод Sort.

Сделайте родителем  TabControl1.Pages[ 0 ]


 
domo   (2007-06-20 17:20) [77]

Дмитрию К: Еще раз большое спасибо за ответы. Пока все вроде бы ясно.


 
domo   (2007-06-21 11:21) [78]

Кладову В: Переустановил КОЛ и проверил Tooltips. Работает как часы - все подсказки на своих кнопках. Спасибо большое за исправление.

А вот про Update
> надо сначала очистить list view (LVCount := 0) и Update сделать, потом устанавливать новое значение
я не понял. Объясните пожулуйста как сделать Update.

И у меня вдруг резко прыгнул размер программы - с 40Кб до 3 МБ!  Кстати, весь мой список строк в файле, откуда я его читаю - всего 3Мб. Интересно, и что же это я мог такого сделать - ведь просто переустановил КОЛ, добавил вирт. список в программу и всё. Конечно, я много экспериментировал, но вроде все эксперименты вытер из кода... В каком хоть направлении искать?


 
mdw ©   (2007-06-21 12:14) [79]


> В каком хоть направлении искать?

uses


 
Vladimir Kladov   (2007-06-21 17:10) [80]

вы его случайно в виде ресурса к программе не подключили. Даже если подключить все модули VCL, 3 мбайта никак не получится. Разве только настроить использование отладочной информации для удалённой отладки (Remote debug) и Include TD32 debug info, и то, наверное, столько не будет.


 
domo   (2007-06-22 13:02) [81]

mdw: Нет.

Vladimir Kladov: пойду проверю насчет ресурсов, но явно я ничего не включал.
И меня очень интересует Update, т.к. в конце вирт.списка после манипулирований появляются пустые строки. Объясните пожулуйста как сделать Update. LVCount := 0 я делаю.
> надо сначала очистить list view (LVCount := 0) и Update сделать, потом устанавливать новое значение


 
=BuckLr=   (2007-06-22 13:11) [82]


> после манипулирований появляются пустые строки

кстати, когдя я работал с листвью, я замечал такую вот фишку: после некоторого рода действий с обновлениями прорисовка некоторых итемов и сетки между ними не выполнялась (как будто смазывалась сетка). Так уродливо выглядело...


 
Дмитрий К ©   (2007-06-22 13:23) [83]


> Объясните пожулуйста как сделать Update.

LV.LVCount:=0;
LV.Update;
...


 
domo   (2007-06-25 16:33) [84]

Пустые строки исчезли, еще раз спасибо Дмитрию К.

Что касается размера: Потратив уйму времени на различные манипуляции, особенно с ресурсами, я добился незначительного эффекта лишь включая/выключая разные опции компилятора Д5 - размер программы уменьшился в 3 раза и составил 1Мб. Поскольку больше идей не было, а уменьшить размер программы очень хотелось, я пошел по самому простому пути - создал новый проект КОЛ и напрямую перекопировал туда код из unit1.pas. Размер программы срузу прыгнул до 40Кб и пока таким и остается. Правда, в Д5 так делать нельзя - интерфейс пользователя полностью разрушился, все связи между объектами и процедурами пропали, да и вообще внешний вид программы стал полностью неузнаваем, метки или сместились или исчезли. Часть я восстановил, часть еще надо выяснить как. Пытаюсь отредактировать файлы *.inc и *.dfm, а Д5 сразу же переписывает их по-старому. Н-р, возможно ли вирт.список разместить на первой вкладке KOLTabControl так, чтобы он был прижат влево и вниз до края, а сверху прижат до названия над ним, которое в виде Label1? Или вот еще - я нарисовал картинки на свои кнопки (24х24) и этот BMP файл 256 цветов занимает 10Кб, а после подключения картинок размер программы увеличивается не на 10 Кб, а на 30, т.е. почти в 2 раза. Это правильно? И будут ли кнопки всегда высотой 24, или каким-то свойством их размер можно изменить?

Кладову В. : Планируется ли ответ на мой вопрос для ФАК (см. выше) по установке КОЛ:

"У меня есть любимые пакеты KOLxxx.pas и KOLyyy.pas, а также их зеркала MCKxxx.pas и MCKyyy.pas. Я хочу, чтобы они устанавливались вместе с КОЛ/МСК и появлялись в Дельфи на той же вкладке, что и стандартные компоненты КОЛ/МСК. Как это сделать?"


 
=BuckLr=   (2007-06-25 17:29) [85]


> "У меня есть любимые пакеты KOLxxx.pas и KOLyyy.pas, а также
> их зеркала MCKxxx.pas и MCKyyy.pas. Я хочу, чтобы они устанавливались
> вместе с КОЛ/МСК и появлялись в Дельфи на той же вкладке,
>  что и стандартные компоненты КОЛ/МСК. Как это сделать?"

Думаю, собрать свой пакет...


 
Dy1 ©   (2007-06-25 21:49) [86]


> > "У меня есть любимые пакеты KOLxxx.pas и KOLyyy.pas,
> Думаю, собрать свой пакет...

Тогда вопрос "как это сделать?". У меня никакого опыта в этом и попытки собрать в пакет любимые компоненты к нужному результату не приводят


 
=BuckLr=   (2007-06-25 22:40) [87]


> У меня никакого опыта в этом

Открою страшную тайну - я тоже :) Просто сказал, что мне советовали...


 
SergeR ©   (2007-06-26 11:58) [88]

Возмите, например, пакет от KOLMCK. И из всех других нужных DPK накидайте туда всего... Затем сохраните и используйте его для установки и билда.

PS. Сам не понял, чего написал...Голова уже ватная..)))


 
domo   (2007-06-26 16:58) [89]

Я так понимаю, что при первом полном обновлении КОЛ свой пакет с КОЛ разрушится. Да и согласен, тут надо иметь определенный опыт, а то такого в тот пакет как накидаешь...


 
Vladimir Kladov   (2007-06-26 17:20) [90]

А зачем вам обновлять пакет (dpk и его конфигурационные файлы)? Обновлению подлежат только файлы pas и inc, которые только и изменяются почти всегда.


 
SergeR ©   (2007-06-26 18:21) [91]


> domo   (26.06.07 16:58) [89]

Ну сохраните  Вы свой пакет, как MySuperPuperPackage.dpk
Затем обновляеете всё что нужно.
Затем открываете в Дельфи MySuperPuperPackage.dpk и Build.


 
domo   (2007-06-27 14:50) [92]

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


 
domo   (2007-07-03 14:48) [93]

Я разобрался, почему программа резко увеличивается в размере. Кроме включения в файл ресурсов и отладочной информации (о чем напоминал В.Кладов) это происходит каждый раз при обновлении версии КОЛ. Все возвращается к нормальному виду лишь при перекомпиляции проекта с опцией "Построить". Конечно, сложно об этом все время помнить, но это так.

Еще мне не ответили на вопрос о том, на сколько должен увеличиться размер программы (exe), если я подключаю свои рисунки на кнопки панели инструментов из файла размером 10Кб. Какой там принцип? У меня программа размером 40Кб становится 70Кб. Это норма? Ответьте, пожалуйста.


 
Vladimir Kladov   (2007-07-03 17:08) [94]

Ровно настолько, каков действительный размер ресурса + размер кода, его извлекающего/распаковывающего и т.п. Если рисунок gif, то компонент для распаковки gif -> bmp как раз размером 30К. А jpg->bmp ~ 50K. Иногда проще хранить rle-сжатый bmp.


 
domo   (2007-07-04 18:11) [95]

Хорошо, тогда в каком формате советуете хранить? Тот, что у меня - именно и есть BMP 10кб.


 
Vladimir Kladov   (2007-07-04 20:47) [96]

Увеличение в 4 раза очень напоминает увеличение разрядности. Как ресурс делаете? Размер res-файла должен быть чуть больше исходной картинки, т.е. 10-11К.


 
domo   (2007-07-06 18:31) [97]

Ресурс я делаю в Paint Shop Pro (аналог фотошоп только в несколько раз компактнее). Создаю картинку 408х24 (у меня 17 кнопок 24х24) и рисую от руки 17 кнопок встык. Сохраняю как БМП 256 цветов (иначе очень большой файл). Размер 10,8 Кб. А вот при включении этой картинки в KOLToolbar появляется ресурс Form1_Toolbar1.res и он 29,5кб. На столько же увеличивается и программа. Совсем не те 10-11К, о к-рых и Вы пишете, и я сам ожидал. В чем причина я сам разобраться не могу. Подскажите, пожалуйста.


 
Vladimir Kladov   (2007-07-06 19:52) [98]

Вот у меня ресурс 824 байта битмап после создания rc-файла и компиляции в brcc32 даёт 880 байт. Не тот инструмент используете.


 
domo   (2007-07-09 09:52) [99]

Возможно не тот, не спорю. Только Вы не написали, как же правильно надо создать ресурс. Напишите, пожалуйста.


 
=BuckLr=   (2007-07-09 11:26) [100]


> как же правильно надо создать ресурс


> при включении этой картинки в KOLToolbar появляется ресурс


 
SergeR ©   (2007-07-09 14:17) [101]

Создаете текстовый файл Myresurses.rc В нем пишите
MyBMP BMP MyFile1.bmp
Сохраняете.
Затем запускаете brcc32 Myresurses.rc
Создается файл MyBMP.res - юзайте.


 
Vladimir Kladov   (2007-07-09 16:04) [102]

BITMAP, а не BMP. К тому же далеко не каждый битмап brcc32 поймёт. Гораздо удобнее зосовывать в ресурс RCDATA, и считывать через Resource2Stream. Так можно любые данные схранять, хоть PNG/JPG/GIF, хоть текст, хоть звук, хоть видео.


 
Dy1 ©   (2007-07-10 00:17) [103]

> Затем запускаете brcc32 Myresurses.rc

"И эти люди называют нас извращенцами" (с) А.Пушков
И никому не влом запускать brcc32 вручную? Жмёте на кнопку "+" (добавить юнит), выбираете свой rc и при компиляции/сборке и res появится и ресурсы будут включены в ехе.
 Пожалуй это не в первый раз написанное можно отнести к "Большим Секретам Delphi IDE" :-7


 
Dy1 ©   (2007-07-10 00:20) [104]

Извиняюсь, цитируемый оказался с другой фамилией :)


 
KOLBoss ©   (2007-07-10 06:03) [105]


> "У меня есть любимые пакеты KOLxxx.pas и KOLyyy.pas, а также
> их зеркала MCKxxx.pas и MCKyyy.pas. Я хочу, чтобы они устанавливались
> вместе с КОЛ/МСК и появлялись в Дельфи на той же вкладке,
>  что и стандартные компоненты КОЛ/МСК. Как это сделать?"

Правим mckXxx.pas, procedure Register; ("Название вкладки").
Берём любой *.dpk для вашей версии Delphi.
Правим xxxD7.dpk, package xxxD7;, contains mckXxx in "mckXxx.pas";
Ну а дольше как обычно. (Install).

и у вас должно появится xxx.bpl (сам пакет), xxx.dcp (его исходник нужен для установки других пакетов).
и в реестре добавится
[HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Known Packages]
"$(DELPHI)\\KOL\\xxxD7.bpl"="_KOL_ mirror controls for Delphi 7"
[HKEY_CURRENT_USER\Software\Borland\Delphi\7.0\Palette]
"Название вкладки"="mckxxx.TKOLxxx;"
Это всё что касается пакетов.


 
KOLBoss ©   (2007-07-10 06:13) [106]

Мож кто подскажет почему KOLHttp конфликтует с KOLFtp
говорит что UStr.dcu уже исползует KOLFtp?


 
domo   (2007-07-10 08:58) [107]

=BuckLr=: > при включении этой картинки в KOLToolbar появляется ресурс

Спасибо, но именно так я и делал, да и толку от этого мало - ресурс все равно 30Кб вместо 10кб.

SergeR: Ресурс создается таким, как надо - 10Кб, большое спасибо за совет. Лишь несколько уточнений:

- MyBMP BITMAP MyFile1.bmp, а не MyBMP BMP MyFile1.bmp
- имя BMP-файла нужно в формате DOS, не WIN
- Создается файл Myresurses.RES, а не MyBMP.res

Но что теперь делать с этим ресурсом? Как закинуть его на кнопки KOLToolBar, заменив существующий в 30Кб?

Vladimir Kladov: Спасибо за уточнения, но только если "Гораздо удобнее зосовывать в ресурс RCDATA, и считывать через Resource2Stream", то почему Вы не пишете где взять RCDATA, как засунуть их в ресурс и как заменить этим ресурсом старые изображения кнопок KOLToolBar посредством Resource2Stream?

Dy1: Конечно, так гораздо проще. Спасибо, попробую.

KOLBoss: Спасибо, я обязательно постараюсь разобраться с этими пакетами установки.


 
=BuckLr=   (2007-07-11 23:26) [108]


> то почему Вы не пишете где взять RCDATA, как засунуть их
> в ресурс

Для сих целей существует Ресторатор :)


 
domo   (2007-07-12 09:51) [109]

C Ресторатором я знаком, но я его использую, чтобы извлекать и заменять ресурсы в чужих программах. Не в своей. В общем, я пока не понимаю и не вижу ни от кого ответа, как заменить старые 17 картинок на кнопках размером 30Кб (они уже в программе) на новые 10Кб (они в отдельном файле).


 
Дмитрий К ©   (2007-07-12 10:13) [110]


> как заменить старые 17 картинок на кнопках размером 30Кб
> (они уже в программе) на новые 10Кб (они в отдельном файле).


Для начала проверьте что находится внутри Form1_Toolbar1.res


 
domo   (2007-07-13 13:56) [111]

Image Editor показывает, что там внутри лишь моя картинка для 17 кнопок. А что там еще должно быть?


 
Дмитрий К ©   (2007-07-13 14:04) [112]


> Image Editor показывает, что там внутри лишь моя картинка
> для 17 кнопок. А что там еще должно быть?

Ничего. Но файл-то большем размером чем должен быть.


 
domo   (2007-07-13 14:43) [113]

Так в этом же и суть. Я тоже ожидал 10Кб, а не 29. И когда я ресурс создаю по совету SergeR, то он именно 10кб, но я не знаю, что с этим ресурсом дальше делать...


 
имя   (2007-07-13 21:37) [114]

Удалено модератором


 
имя   (2007-07-14 08:05) [115]

Удалено модератором


 
имя   (2007-07-14 08:05) [116]

Удалено модератором



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

Форум: "KOL";
Текущий архив: 2008.02.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.82 MB
Время: 0.048 c
2-1201596073
Edit
2008-01-29 11:41
2008.02.24
Edit с заглавной буквы


9-1166065606
GameDev
2006-12-14 06:06
2008.02.24
Что случилось с Animiks ?


2-1201538438
ComboBox
2008-01-28 19:40
2008.02.24
Шрифт в ComboBox


15-1201103474
Галинка
2008-01-23 18:51
2008.02.24
доступ к сетевому принтеру из "гостевой" системы


15-1201184222
AntonUSAnoV
2008-01-24 17:17
2008.02.24
как оценить свой труд ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский