Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить обратиться к полю класса (private) из регулярной... [D7, WinXP]


The One ©   (2005-11-20 11:54:00) 

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


Fay   (2005-11-21 03:36:00) [1]

2 Карелин Артем ©   (20.11.05 13:05) [2]
Да?! А мужики-то не знают! Надо срочно сообщить в Borland.


begin...end   (2005-11-20 15:15:00) [2]

> Карелин Артем ©   (20.11.05 13:05) [2]
> Неверно!

Вы попробуйте, попробуйте.


Плохиш   (2005-11-20 15:12:00) [3]


> The One ©   (20.11.05 14:28) [6]
> Ок работает, но снова возникает проблемма:
> Т.е. обратиться к защищенному сво-ву класса. Таким вот образом
> компилятор пишет, что Property'CurrProc' inaccessible here

Правильно пишет, потому что при вызове класс-функции объекта может не существовать, о каких свойствах тогда может идти речь.

PS. Перет тем как давить кнопки рекомендую изучить теорию и понять, что же ты в конце концов сделать хочешь.


The One   (2005-11-20 14:28:00) [4]

Ок работает, но снова возникает проблемма:
type
TMyClass = class
   private
      FB:integer;
   protected
      property B:integer read FB write FB;
      class function MyFunc (A:integer):integer;
end;


Как теперь здесь:
class function MyFunc (A:integer):integer;
begin
  result:=A+B//вот так вот сделать?
end;


Т.е. обратиться к защищенному сво-ву класса. Таким вот образом компилятор пишет, что Property 'CurrProc' inaccessible here


Defunct   (2005-11-20 13:21:00) [5]

The One ©   (20.11.05 13:12) [3]
> Как быть?

TMyClass = class
..
  public
      classfunction MyFunc (A:integer):integer;
..


Anton_K   (2005-11-20 13:14:00) [6]


> Процедура должна быть членом класса, а не просто
> лежать в том же модуле.

Не должна.


The One   (2005-11-20 13:12:00) [7]

Немного уйду от полей в сторону методов класса.

type
TMyClass = class
   public
       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
Как быть?


Карелин Артем   (2005-11-20 13:05:00) [8]


> begin...end ©   (20.11.05 12:29) [1]

Неверно! Процедура должна быть членом класса, а не просто лежать в том же модуле.


begin...end   (2005-11-20 12:29:00) [9]

Если процедура находится в том же модуле, что и описание класса, то проблем, как раз-таки, быть не должно. Обюращаться можно обычным образом.


Наверх

Титульная страница Поиск, карта сайта Написать письмо