Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка в TKOLOpenDirDialog из MCK? [Delphi, KOL, MCK, Windows]


Unknown Mystic ©   (2006-03-17 09:01:00) 

Что-то давно я не программировал на Delphi... не знаю с какой версии это пошло...

Как я понял в некоторый момент определение
TKOLOpenDirDialog = POpenDirDialog
было заменено на
TKOLOpenDirDialog = POpenDirDialogEx

В то время как компонент из MCK в inc файл пишет создание объекта с помощью NewOpenDirDialog, что и вызывает ошибку не соответствия типов...


Unknown Mystic   (2006-03-22 13:53:00) [1]


> Barloggg   (21.03.06 09:30) [12]


Для работы с TKOLOpenDirDialog не надо раскомментировать строку в MCKfakeClasses.inc, если ты этот inc имел ввиду. Да после этого все работает, но должно работать и без этого! Это определение есть и в kol.pas! Только поначалу Delphi у меня его почему-то не видела. Попробуй в kol.pas заменить
{$IFDEF KOL_MCK}
type  TKOLOpenDirDialog = POpenDirDialog;
{$ENDIF}

на
type  TKOLOpenDirDialog = POpenDirDialog;
(т.е. убрать {$IFDEF KOL_MCK} и {$ENDIF})
скомпилить свой проект - должно работать, а потом вернуть как было. Все должно нормально компиллиться после этого.


Barloggg   (2006-03-21 09:30:00) [2]

хмм... а я просто разремал строчку с POpenDirDialog (которая в inc файле) и все работает. пользуюсь этим диалогом как ни в чем не бывало...
и вот только сейчас узнал, что оказывается нужно было koladd подключить... хе-хе...
если уж что и стоит действительно добавлять так это комментарий в inc файл чтобы не разремывали, а просто подключили koladd файл...


Unknown Mystic   (2006-03-19 11:48:00) [3]


> ECM ©   (18.03.06 12:16) [8]

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


> Thaddy   (18.03.06 16:33) [10]

I speak not about incompatibility of types, but about for some reason arisen and then disappeared problem - identifier TKOLOpenDirDialog not defined... Speaking simply, at first Delphi did not see this definition in KOL.pas, for some reason...
(Last 2 strings of Unknown Mystic ©   (18.03.06 11:19) [7])


Thaddy   (2006-03-18 16:33:00) [4]

seems to be a namespace "problem".
That is no problem:

You can use:

[CODE]
koladd.TKOLOpenDirDialog
[/CODE]

Just prepend the unit name without pas


Maloric   (2006-03-18 12:37:00) [5]

Здраствуйте, у меня кстати точно такая же проблема возникала, я сам не понимал почему и KolAdd тоже не использовал, в конце конков вместо TKOLOpenDirDialog использовал POpenDirDialog без визуального компонента.


ECM   (2006-03-18 12:16:00) [6]

Ну тогда возможно были какие-то проблемы с DEFINE KOL_MCK. Может глюк с kol.dcu... в таких случаях надо делать ребилд или предварительно стереть все dcu


Unknown Mystic   (2006-03-18 11:19:00) [7]


> ECM ©   (17.03.06 18:50) [4]

Это то как раз понятно...

Не понятно то, почему сначала не компилилось... Ни "готовый" проект созданый в версии 1.97 (или что-то в этом роде), ни новый, который был создан для попытки разобраться с этой ошибкой и содержащий один единственный TKOLOpenDirDialog... Оба не использовали KOLadd...

Я говорю не про несоответствие типов, а про почему-то возникавшую, а потом исчезнувшую ошибку - TKOLOpenDirDialog не определен... Попросту говоря, поначалу Delphi почему-то не видела определение в KOL.pas ...


ECM   (2006-03-18 10:43:00) [8]


> .е. если вынести его из KOLadd скажем в KOLDirDlgEx, то
> проблема должна исчезнуть, так?

Ну, вобщем, да ... хотя можно было бы и переделать MCK, чтобы переключать что использовать Ex или нет... хотя как вы этом случае определить есть ли KOLadd...чтобы использовать Ex.
Может лучше отказаться от использования автоматической замены  

{$IFDEF KOL_MCK}
type TKOLOpenDirDialog = POpenDirDialogEx;
{$ENDIF}

в KOLadd?
Или сделать отдельный MCK-компонент?
типа TKOLOpenDirDialogEx...


Vladimir Kladov   (2006-03-18 09:52:00) [9]

т.е. если вынести его из KOLadd скажем в KOLDirDlgEx, то проблема должна исчезнуть, так?


ECM   (2006-03-17 18:50:00) [10]

Никакой "неизвестной мистики"...:))

В KOL.PAS объявлен OpenDirDialog и присутствует запись:

{$IFDEF KOL_MCK}
type  TKOLOpenDirDialog = POpenDirDialog;
{$ENDIF}

В KOLadd.pas объявлен OpenDirDialogEx и присутствует:

{$IFDEF KOL_MCK}
type TKOLOpenDirDialog = POpenDirDialogEx;
{$ENDIF}

Соответственно если в uses KOLadd расположено после KOL возникает разногласие с сгенерированным МСК-кодом в inc. Возможно Вы бросали на форму компонент требующий KOLadd (тотже Action(List) например) при этом ошибка возникла. Потом компонент был убран - и проблема "рассосалась"
т.к. без KOLadd в uses то же всё в порядке


Unknown Mystic   (2006-03-17 17:51:00) [11]

Полазил я тут еще... Похимичил в KOL.pas... скомпилил... закрыл все без сохранения изменений...

Тьфу ты... Мистика какая-то... После того как один раз заставил все это скомпилиться проблема исчезла... В том числе и в другом проекте использующем этот компонент...

Теперь все работает, но я так и не понял, что это было...


Unknown Mystic   (2006-03-17 17:11:00) [12]

Ничего не понимаю... Мне KOLadd то не нужен... Я когда сначала кинул TKOLOpenDirDialog на форму и попытался скомпилить, мне Delphi сказала, что идентификатор TKOLOpenDirDialog не определен, ну я и решил, что этот компонент был перенесен в KOLadd.pas, чтобы сам KOL.pas уменьшить... В KOL.pas я его даже как-то и не смотрел...

Чтобы это могло быть? Криво установленный KOL? Но тогда не понятно, почему остальные компоненты нормально работают... Устанавливал 2.30 + обновление 2.30 -> 2.34 ...


ECM   (2006-03-17 12:05:00) [13]

Да, есть такой эффект...Но только при использовании KOLadd. Опишите ситуацию и в письмо Владимиру...
Пока можно выкрутится так: поставьте в uses модуля где находится OpenDirDialog объявление KOLadd раньше объявления KOL

uses ... KOLadd, KOL...


Наверх

Титульная страница Поиск, карта сайта Написать письмо