![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
проблема со свойствами объекта [D7, XP]
Fleg © (2007-08-23 17:19:00)Приветствую мастера и подмастерия!
Проблема в следующем:
Создал класс, его объект, свойство для обращения к массиву:
mesto = class(tobject)
CL:gluquadricobj;
tabl: array[0..8,0..8] of glfloat;
coord: array[0..1] of glfloat;
constructor create;
function getcoord(indexx:integer):glfloat;
procedure setcoord(indexx:integer;uni:glfloat);
property oxk[indexx:integer]:glfloat read getcoord write setcoord;
после описал, что должна делать setcoord и getcoord , все работало как надо.
Далее нужно было создать еще одно свойство для обращения к другому массиву, описал его сразу после первого свойства:
function gettabl(indx,indy:integer):glfloat;
procedure settabl(indx:integer;indy:integer;unin:glfloat);
property tablxy[indx:integer;indy:integer]:glfloat read gettabl write settabl;
по образу и подобию первого свойства описал действия settabl и gettabl:
function mesto.gettabl(indx, indy: integer): glfloat;
begin
result:=myMesto.tablxy[indx,indy];
end;
procedure mesto.settabl(indx, indy: integer; unin: glfloat);
begin
tabl[indx,indy]:=unin;
end;
При записи с использованием settabl комп не ругается, но при попытке прочитать gettabl все виснет, если запустить exeшник то не виснет, но пишет ошибку - stack overlow!
Жду дельных советов.
sdts (2007-08-23 19:35:00) [1]нашел :)
недавно тут этот момент обсуждали
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1186046769&n=3
sdts (2007-08-23 19:28:00) [2]ну вот это и есть основы ООП, вот тут в кратце
http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29
но вообще, все-же книги в этом плане лучше
fleg (2007-08-23 19:12:00) [3]Спасибо:)), ссылку нашел, изучу.
И последнее - можно ведь не использовать свойства, работать с полями напрямую(если можно так сказать) - насколько это лучше/хуже?
sdts (2007-08-23 18:43:00) [4]
> PS опыта блин у меня маловато...
это со временем проходит, а вот думать - это надо учится ;)
вам надо подучить ооп, см соседнюю ветку про Использование объектов, там хорошие учебники, вот их бы и почитать
fleg (2007-08-23 18:37:00) [5]
> sdts
Спасибо - дельный совет -
> думать начнем?
Спасибо! Усе работает!
PS опыта блин у меня маловато...
sdts (2007-08-23 18:23:00) [6]
> fleg © (23.08.07 18:04) [8]
по второму кругу пойдем или думать начнем?
ошибка была т.к. был рекурсивный вызов метода gettabl
fleg (2007-08-23 18:04:00) [7]ну так почему же ошибка возникает когда я пытаюсь второй массив считать -tabl: array[0..8,0..8] of glfloat; ??
может я их описываю неправильно(см выше)..???
sdts (2007-08-23 18:01:00) [8]result := self.tabl[indx,indy];
тут self. - необязательно, но наглядно!
fleg (2007-08-23 17:56:00) [9]tablxy - свойство, tabl -поле..вроде..
tabl - вроде поле - оно в самом начале.
self так - result:=self.tablxy[indx,indy]; - не помогает.
и еще до этого(в первом свойстве) у меня было - result:=coord[indexx]; - и работало!
???
sdts (2007-08-23 17:48:00) [10]
> а tablxy я совсем не нашел у вас
в смысле среди полей
wp2 (2007-08-23 17:44:00) [11]Что еще за MyMesto?
sdts (2007-08-23 17:44:00) [12]
> Если можно, подробнее?
ну так тут myMesto вообще ненадо, пишите лучьше self и тогда понятнее будет
а tablxy я совсем не нашел у вас
fleg (2007-08-23 17:33:00) [13]
> sdts (23.08.07 17:31) [1]
>
> > result:=myMesto.tablxy[indx,indy];
из-за этого???
Если можно, подробнее?
sdts (2007-08-23 17:31:00) [14]
> result:= myMesto. tablxy[indx,indy];