Форум: "KOL";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизОшибка в TKOLOpenDirDialog из MCK? Найти похожие ветки
← →
Unknown Mystic © (2006-03-17 09:01) [0]Что-то давно я не программировал на Delphi... не знаю с какой версии это пошло...
Как я понял в некоторый момент определение
TKOLOpenDirDialog = POpenDirDialog
было заменено на
TKOLOpenDirDialog = POpenDirDialogEx
В то время как компонент из MCK в inc файл пишет создание объекта с помощью NewOpenDirDialog, что и вызывает ошибку не соответствия типов...
← →
ECM © (2006-03-17 12:05) [1]Да, есть такой эффект...Но только при использовании KOLadd. Опишите ситуацию и в письмо Владимиру...
Пока можно выкрутится так: поставьте в uses модуля где находится OpenDirDialog объявление KOLadd раньше объявления KOLuses ... KOLadd, KOL...
← →
Unknown Mystic © (2006-03-17 17:11) [2]Ничего не понимаю... Мне KOLadd то не нужен... Я когда сначала кинул TKOLOpenDirDialog на форму и попытался скомпилить, мне Delphi сказала, что идентификатор TKOLOpenDirDialog не определен, ну я и решил, что этот компонент был перенесен в KOLadd.pas, чтобы сам KOL.pas уменьшить... В KOL.pas я его даже как-то и не смотрел...
Чтобы это могло быть? Криво установленный KOL? Но тогда не понятно, почему остальные компоненты нормально работают... Устанавливал 2.30 + обновление 2.30 -> 2.34 ...
← →
Unknown Mystic © (2006-03-17 17:51) [3]Полазил я тут еще... Похимичил в KOL.pas... скомпилил... закрыл все без сохранения изменений...
Тьфу ты... Мистика какая-то... После того как один раз заставил все это скомпилиться проблема исчезла... В том числе и в другом проекте использующем этот компонент...
Теперь все работает, но я так и не понял, что это было...
← →
ECM © (2006-03-17 18:50) [4]Никакой "неизвестной мистики"...:))
В 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 то же всё в порядке
← →
Vladimir Kladov (2006-03-18 09:52) [5]т.е. если вынести его из KOLadd скажем в KOLDirDlgEx, то проблема должна исчезнуть, так?
← →
ECM © (2006-03-18 10:43) [6]
> .е. если вынести его из KOLadd скажем в KOLDirDlgEx, то
> проблема должна исчезнуть, так?
Ну, вобщем, да ... хотя можно было бы и переделать MCK, чтобы переключать что использовать Ex или нет... хотя как вы этом случае определить есть ли KOLadd...чтобы использовать Ex.
Может лучше отказаться от использования автоматической замены
{$IFDEF KOL_MCK}
type TKOLOpenDirDialog = POpenDirDialogEx;
{$ENDIF}
в KOLadd?
Или сделать отдельный MCK-компонент?
типа TKOLOpenDirDialogEx...
← →
Unknown Mystic © (2006-03-18 11:19) [7]
> ECM © (17.03.06 18:50) [4]
Это то как раз понятно...
Не понятно то, почему сначала не компилилось... Ни "готовый" проект созданый в версии 1.97 (или что-то в этом роде), ни новый, который был создан для попытки разобраться с этой ошибкой и содержащий один единственный TKOLOpenDirDialog... Оба не использовали KOLadd...
Я говорю не про несоответствие типов, а про почему-то возникавшую, а потом исчезнувшую ошибку - TKOLOpenDirDialog не определен... Попросту говоря, поначалу Delphi почему-то не видела определение в KOL.pas ...
← →
ECM © (2006-03-18 12:16) [8]Ну тогда возможно были какие-то проблемы с DEFINE KOL_MCK. Может глюк с kol.dcu... в таких случаях надо делать ребилд или предварительно стереть все dcu
← →
Maloric (2006-03-18 12:37) [9]Здраствуйте, у меня кстати точно такая же проблема возникала, я сам не понимал почему и KolAdd тоже не использовал, в конце конков вместо TKOLOpenDirDialog использовал POpenDirDialog без визуального компонента.
← →
Thaddy (2006-03-18 16:33) [10]seems to be a namespace "problem".
That is no problem:
You can use:
[CODE]
koladd.TKOLOpenDirDialog
[/CODE]
Just prepend the unit name without pas
← →
Unknown Mystic © (2006-03-19 11:48) [11]
> 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])
← →
Barloggg (2006-03-21 09:30) [12]хмм... а я просто разремал строчку с POpenDirDialog (которая в inc файле) и все работает. пользуюсь этим диалогом как ни в чем не бывало...
и вот только сейчас узнал, что оказывается нужно было koladd подключить... хе-хе...
если уж что и стоит действительно добавлять так это комментарий в inc файл чтобы не разремывали, а просто подключили koladd файл...
← →
Unknown Mystic © (2006-03-22 13:53) [13]
> 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})
скомпилить свой проект - должно работать, а потом вернуть как было. Все должно нормально компиллиться после этого.
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.049 c