Як отримати звернутися до поля класу (private) з регулярною.
процедури, описаної в тому ж модулі що і клас.
Сабж.
Якщо процедура знаходиться в тому ж модулі, що і опис класу, то проблем, як раз-таки, бути не повинно. Обюращаться можна звичайним чином.
Трохи піду від полів в сторону методів класу.
type
TMyClass = class
# XA0; # XA0; public
# XA0; # XA0; # XA0; # XA0; function MyFunc (A: integer): integer;
end;
У тому ж модулі існує регулярна процедура:
function AnotherFunc (A: integer): integer;
begin
TMyClass.MyFunc (A); // так приблизно хочеться зробити мені
end;
Виникає помилка: This form of method call only allowed for class methods
Як бути?
> Процедура повинна бути членом класу, а не просто
> Лежати в тому ж модулі.
Не повинна.
TMyClass = class
..
# XA0; public
# XA0; # XA0; # XA0; class function MyFunc (A: integer): integer;
..
Ок працює, але знову виникає проблемма:
type
TMyClass = class
# XA0; # XA0; private
# XA0; # XA0; # XA0; FB: integer;
# XA0; # XA0; protected
# XA0; # XA0; # XA0; property B: integer read FB write FB;
# XA0; # XA0; # XA0; class function MyFunc (A: integer): integer;
end;
Як тепер тут:
class function MyFunc (A: integer): integer;
begin
# XA0; result: = A + B // ось так от зробити?
end;
Тобто звернутися до захищеного сво-ву класу. Таким ось чином компілятор пише, що Property "CurrProc" inaccessible here
PS. Перет тим як тиснути кнопки рекомендую вивчити теорію і зрозуміти, що ж ти в кінці кінців зробити хочеш.
Ви спробуйте, спробуйте.