Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.31;
Скачать: CL | DM;

Вниз

Что может быть ? Не могу откомпелировать компонент...   Найти похожие ветки 

 
desc   (2009-03-31 11:56) [0]

Пишет [Fatal Error] ADORole.pas(1): Program or unit "ADORole.pas" recursively uses itself из-за чего непонятно...

Вот код:

unit ADORole

interface

uses
 SysUtils, Classes, DB, ADODB;

type
 TADORole = class(TADOQuery)
 private
   { Private declarations }
   FIdRole: Integer;
   procedure SetIdRole(const Value: Integer);
 protected
   { Protected declarations }
 public
   { Public declarations }
   constructor Create(AOwner: TComponent); override;
   property IdRole: Integer read FIdRole write SetIdRole default 0;
 published
   { Published declarations }
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("ADO", [TADORole]);
end;

{ TRole }

constructor TADORole.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
end;

procedure TADORole.SetIdRole(const Value: Integer);
begin
 FIdRole := Value;
end;

end.


 
Правильный$Вася   (2009-03-31 11:59) [1]


> unit ADORole;


 
desc   (2009-03-31 12:04) [2]


> Правильный$Вася   (31.03.09 11:59) [1]
>
>
> > unit ADORole;


всеравно тоже самое, ругается как раз таки на эту строчку unit ADORole;


 
Ega23 ©   (2009-03-31 12:09) [3]

property IdRole: Integer read FIdRole write SetIdRole default 0;

Зачем у этого свойства директива default?
И, тем более, зачем 0? Оно и так ноль в момент создания.


 
desc   (2009-03-31 12:12) [4]


> Ega23 ©   (31.03.09 12:09) [3]
>
> property IdRole: Integer read FIdRole write SetIdRole default
> 0;
>
> Зачем у этого свойства директива default?
> И, тем более, зачем 0? Оно и так ноль в момент создания.
>

Исправил ) Теперь бы ошибку исключить )


 
Alkid ©   (2009-03-31 12:29) [5]

Проследи связи через uses, нет ли там у тебя цикла.


 
korneley ©   (2009-03-31 12:40) [6]

Ой, чего-то мы недоговариваем... Не поленился скопипастил, откомпилировал, и никаких циклических ссылок... Может, чё сделал не так?


 
Ega23 ©   (2009-03-31 12:42) [7]

Эта... А в чём вообще сакральный смысл данного компонента? Id добавить? Ну так есть же Tag...


 
desc   (2009-03-31 12:51) [8]


> Ega23 ©   (31.03.09 12:42) [7]
>
> Эта... А в чём вообще сакральный смысл данного компонента?
>  Id добавить? Ну так есть же Tag...


насчет tag ты прав, смысл в том, что при присвоении свойству значения, в процедуре будет цикл который переберает табличку и применяет к ней те или иные правила...

Чтот типа этого:

 rol.Close;
 rol.Parameters.ParamByName("id_role").Value := FIdRole;
 rol.Parameters.ParamByName("object").Value := FClassName;
 rol.Open;
 rol.First;

     fmByt.Hide;
     while not rol.Eof do
       begin      
         comp := FindComponent(rolcomponent.AsString);
         if (comp <> nil) then
           begin
             if (comp is TMenuItem) then
               begin  
                 (comp as TMenuItem).Visible := rolvisible.AsBoolean;
                 (comp as TMenuItem).Enabled := rolenabled.AsBoolean;
             if (comp is TButton) then
               begin
                 (comp as TButton).Visible := rolvisible.AsBoolean;
                 (comp as TButton).Enabled := rolenabled.AsBoolean;
               end;
             if (comp is TToolButton) then
               begin
                 (comp as TToolButton).Visible := rolvisible.AsBoolean;
                 (comp as TToolButton).Enabled := rolenabled.AsBoolean;
               end;
               end;
           end;
         rol.Next;
       end;
     rol.Close;


А вот ошибочка я так и не понял почему возникает, не разобрался...


 
desc   (2009-03-31 12:56) [9]

Верней не к табличке применяет а к форме на которой расположен....


 
Плохиш ©   (2009-03-31 12:59) [10]


> korneley ©   (31.03.09 12:40) [6]
>
> Ой, чего-то мы недоговариваем

Он - вредитель, хочет всем телепаторы поломать.


 
desc   (2009-03-31 13:35) [11]

Ребят ну вспоможите... чтото вообще не разберусь... не пойму в чем ошибка... может настройки компилятора, вроде все нормально...


 
Ega23 ©   (2009-03-31 13:48) [12]


> Чтот типа этого:


В коде одна явная ошибка (возможно опечатка, не знаю), 2 потенциально опасных места и просто к стилю есть вопросы.

Сам найдёшь, или подсказывать?


 
desc   (2009-03-31 14:05) [13]

не, не найду, скажите...

но вопрос снят всем спасибо...

Такая проблема возникает, если имя dpk-файла совпадает с именем pas-файла.

Вот на этом я и поймался...


 
Ega23 ©   (2009-03-31 14:25) [14]


> не, не найду, скажите...


Твой код будет выполняться только в том случае, если comp is TMenuItem
Это ошибка.

Потенциально опасные места - безусловно Open и всё остальное. Ну как минимум - присвоение параметров.

try
 parambyname .....
 try
   Open;
   .....
 except
   ......
 end;
finally
 Close;
end;


Ну и если ты сделал проверку на is, то нафига используешь as? Приводи прямо:
if (smthng is TSomeObject) then
  TSomeObject(smthng)......



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

Текущий архив: 2009.05.31;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
2-1239721357
worldmen
2009-04-14 19:02
2009.05.31
Поиск в поле типа Memo


15-1238486183
desc
2009-03-31 11:56
2009.05.31
Что может быть ? Не могу откомпелировать компонент...


2-1240069618
iiunbreakableii
2009-04-18 19:46
2009.05.31
Иконка программы


4-1210534264
Игорь
2008-05-11 23:31
2009.05.31
Как в Windows Vista программно уменьшить громкость


2-1239942805
товарищ вася
2009-04-17 08:33
2009.05.31
Вопрос про объявление