Форум: "Прочее";
Текущий архив: 2009.05.31;
Скачать: [xml.tar.bz2];
ВнизЧто может быть ? Не могу откомпелировать компонент... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.004 c