![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите с компиляцией [D5, D6, Win2k]
Tristania © (2005-11-25 14:06:00)Здраствуйте!
Вот такая проблема:
Пытаюсь в шестой Дельфе скомпилить программу, написанную в Пятом. Все используемые библиотеки подключены и все вроде гуд.
Вот только компилятор ругается. А именно:
В программе используются формы, которые описаны не как наследники TForm, а как наследники TObject.
В файле проекта они создаются как обычно, через Application.CreateForm. Вот на это место компилятор-то и ругается:
Incompatible types: 'TComponentClass' and 'Class reference'
Будет ли это скомпилено в Пятой Дельфе и как можно это переписать для Шестой?
Вот...
han_malign (2005-11-25 15:41:00) [1]
> Я немного преувеличил. Имел ввиду WndProc, Handle
- ну это тянет, максимум, на заглушку вроде TThread.Synchronize для обработки единственного, собственной генерации, сообщения, или реакции на WM_QUIT...
Плохиш (2005-11-25 15:25:00) [2]
> Tristania © (25.11.05 15:17) [10]
> Я немного преувеличил. Имел ввиду WndProc, Handle
Да, немного, всего-то на предка 4го поколения.
Tristania (2005-11-25 15:17:00) [3]Я немного преувеличил. Имел ввиду WndProc, Handle
Плохиш (2005-11-25 15:16:00) [4]
> Tristania © (25.11.05 14:34) [2]
> Вот так. Имена не имеют значение, но как видно тут есть
> некоторые аттрибуты обыкновенное формы.
Можно указать на аттрибуты? А то, под каким углом не всматривался, не увидел :-(
han_malign (2005-11-25 15:12:00) [5]
> но как видно тут есть некоторые аттрибуты обыкновенное формы
Очевидно - раз оконные классы переписаны с нуля, то и основной класс приложения должен быть свой.
И вообще возникает подозрение, что это Windows Object Library(OWL) от BP7 - так что "создаваться как обычно" это в Delphi ну никак не получится...
З.Ы. А вообще советую посмотреть KOL и FreePascal - не исключено что это от туда...
umbra (2005-11-25 14:53:00) [6]так не надо
CreateFormпользовать. да иApplication, наверно, не нужно. просто создай объект
Reindeer Moss Eater (2005-11-25 14:53:00) [7]Защитили исходники от "дураков"
Digitman (2005-11-25 14:51:00) [8]да ну не могла она в ТАКОМ виде компилиться !)
хотя бы по причине несовместимости типов ..
первый параметр метода CreateForm() требует указания класса, являющегося наследником именно TComponent и никакого иного класса.
и в Д5, и в Д6, и в Д7 в этом отношении все одинаково и ничего не менялось ... да и поменяться не могло, ибо это строго концептуальный момент
Tristania (2005-11-25 14:45:00) [9]Да, не просто....
С толку сбивает то, что с исходниками есть и ЕХЕ-ха, так что прога компилилась...у них...
Digitman (2005-11-25 14:41:00) [10]
> Может они пытались написать свой класс формы?
ну так в любом случае наследоваться следовало бы от TComponent, но никак не от TObject !
Tristania (2005-11-25 14:34:00) [11]Это не я.
Прога чужая.
Сам класс, который ОНИ создают имеет такое описание:
TNazvanieClassa = class(TObject)
procedure First(Sender: TObject; const Param1: String; var Param2: Boolean);
procedure Second(Sender: TObject);
private
FWindowHandle : HWND;
procedure WndProc(var MsgRec: TMessage); virtual;
function Func1(param: string): string;
procedure Func2(param: string; const Value: string);
{ Private declarations }
public
{ Public declarations }
FHalting : boolean;
constructor Create;
destructor Destroy; override;
procedure WMSTARTServing( var Msg : TMessage ); message WM_STARTServing;
published
property Handle : HWND read FWindowHandle;
end;
Вот так. Имена не имеют значение, но как видно тут есть некоторые аттрибуты обыкновенное формы. Может они пытались написать свой класс формы?
Digitman (2005-11-25 14:26:00) [12]
> Будет ли это скомпилено в Пятой Дельфе
и в 5-й не будет ..
с какого перепугу ты пытаешься создать объект-форму, в то время как класс этого объекта не является наследником (прямым или не прямым) TCustomForm ?