Текущий архив: 2007.09.16;
Скачать: CL | DM;
Внизпроблема со свойствами объекта Найти похожие ветки
← →
Fleg © (2007-08-23 17:19) [0]Приветствую мастера и подмастерия!
Проблема в следующем:
Создал класс, его объект, свойство для обращения к массиву:
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 17:31) [1]
> result:=myMesto.tablxy[indx,indy];
← →
fleg © (2007-08-23 17:33) [2]
> sdts (23.08.07 17:31) [1]
>
> > result:=myMesto.tablxy[indx,indy];
из-за этого???
Если можно, подробнее?
← →
wp2 © (2007-08-23 17:44) [3]Что еще за MyMesto?
← →
sdts (2007-08-23 17:44) [4]
> Если можно, подробнее?
ну так тут myMesto вообще ненадо, пишите лучьше self и тогда понятнее будет
а tablxy я совсем не нашел у вас
← →
sdts (2007-08-23 17:48) [5]
> а tablxy я совсем не нашел у вас
в смысле среди полей
← →
fleg © (2007-08-23 17:56) [6]tablxy - свойство, tabl -поле..вроде..
tabl - вроде поле - оно в самом начале.
self так - result:=self.tablxy[indx,indy]; - не помогает.
и еще до этого(в первом свойстве) у меня было - result:=coord[indexx]; - и работало!
???
← →
sdts (2007-08-23 18:01) [7]result := self.tabl[indx,indy];
тут self. - необязательно, но наглядно!
← →
fleg © (2007-08-23 18:04) [8]ну так почему же ошибка возникает когда я пытаюсь второй массив считать -tabl: array[0..8,0..8] of glfloat; ??
может я их описываю неправильно(см выше)..???
← →
sdts (2007-08-23 18:23) [9]
> fleg © (23.08.07 18:04) [8]
по второму кругу пойдем или думать начнем?
ошибка была т.к. был рекурсивный вызов метода gettabl
← →
fleg © (2007-08-23 18:37) [10]
> sdts
Спасибо - дельный совет -
> думать начнем?
Спасибо! Усе работает!
PS опыта блин у меня маловато...
← →
sdts (2007-08-23 18:43) [11]
> PS опыта блин у меня маловато...
это со временем проходит, а вот думать - это надо учится ;)
вам надо подучить ооп, см соседнюю ветку про Использование объектов, там хорошие учебники, вот их бы и почитать
← →
fleg © (2007-08-23 19:12) [12]Спасибо:)), ссылку нашел, изучу.
И последнее - можно ведь не использовать свойства, работать с полями напрямую(если можно так сказать) - насколько это лучше/хуже?
← →
sdts (2007-08-23 19:28) [13]ну вот это и есть основы ООП, вот тут в кратце
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
но вообще, все-же книги в этом плане лучше
← →
sdts (2007-08-23 19:35) [14]нашел :)
недавно тут этот момент обсуждали
http://delphimaster.net/view/15-1186046769/
Страницы: 1 вся ветка
Текущий архив: 2007.09.16;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.115 c