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

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

Глюки с вызовом процедуры по ссылке [D7, XP]


Страницы:   1 2 3 4

yantar92 ©   (2009-11-02 13:29:00) 

Проблема в том, что при передаче ссылки на процедуру как параметр функции начинаются глюки с методами глобального класса.
Код:

...
type
Tpaint=procedure (const x:extended; const y:extended; var series:Tlineseries);
...
procedure paint(const x:extended; const y:extended; var series:Tlineseries);
begin
series.AddXY(x,y);
series.ParentChart.Parent.Repaint;
end;
...
function dc_A_st(... var paint:Tpaint;var series:Tlineseries ...):extended;
...
begin
...
paint(x,y,series);
...
end;

При исполнении процедуры paint выбивает "Ivalid pointer operation", а при дебаге пишет, что метод Repaint класса series.ParentChart.Parent - не определён, тогда как сам класс является определенным.


yantar92   (2009-11-02 14:32:00) [41]

application.processmessages - при дебаге не определен


Медвежонок Пятачок   (2009-11-02 14:30:00) [42]

а может пашет, но неглубоко?


yantar92   (2009-11-02 14:28:00) [43]

вызвать не dc_A_st а в
function dc_A_st(... var paint:Tpaint;var series:Tlineseries ...):extended;
...
begin
...
paint(x,y,series);
application.processmessages //[b]НЕ ПАШЕТ[/b]
...
end;


Сергей М.   (2009-11-02 14:23:00) [44]


> если вызывать


Да нихрена ты ничего не вызываешь !
Гдев приведенном фрагменте хоть что-либо напоминающее вызов ф-ции dc_A_st ?


yantar92   (2009-11-02 14:22:00) [45]

если вызывать процедуру по ссылке, то выходит что application.processmessages перестает работать


clickmaker   (2009-11-02 14:19:00) [46]

> processmassages

надо массажиста менять. адназначна


yantar92   (2009-11-02 14:19:00) [47]

>clickmaker ©   (02.11.09 14:17) [29]
>
>> проблему с application.processmassages
>
>а с ней-то какие проблемы?
>и почему именно paint2 призван ее решить?
если вызывать другую процедуру по ссылке, то это не помогает


Сергей М.   (2009-11-02 14:18:00) [48]


> не решает проблему с application.processmassages


Надо же ! Проблемы плодятся как кролики)


yantar92   (2009-11-02 14:18:00) [49]

>Сергей М. ©   (02.11.09 14:15) [27]
>
>
>> чтобы именно этот код можно было вызывать без глюков
>
>
>Для этого нужно понять, что у тебя там на самом деле  private, а что не имеет >ни малейшего отношения к методу класса

оно то так, но совсем загадочно почему series.addXY - работает, а series.parentchart.parent.repaint - нет


clickmaker   (2009-11-02 14:17:00) [50]

> проблему с application.processmassages

а с ней-то какие проблемы?
и почему именно paint2 призван ее решить?


yantar92   (2009-11-02 14:16:00) [51]

и, кстати, "paint2" не решает проблему с application.processmassages


Сергей М.   (2009-11-02 14:15:00) [52]


> чтобы именно этот код можно было вызывать без глюков


Для этого нужно понять, что у тебя там на самом деле  private, а что не имеет ни малейшего отношения к методу класса


yantar92   (2009-11-02 14:14:00) [53]

нет, не в имени дело. А в том чтобы именно этот код можно было вызывать без глюков


Сергей М.   (2009-11-02 14:12:00) [54]

Ну ты же сам сказал как избавиться - вызывать не paint а например некий paint2 код которого иной)


yantar92   (2009-11-02 14:11:00) [55]

ну вопрос как от этого избавится


Сергей М.   (2009-11-02 14:09:00) [56]


> суть вопроса не в этом заключалась


А никакого вопроса и не было.
Была констатация некоего факта, не более того.


yantar92   (2009-11-02 14:07:00) [57]

ладно, суть вопроса не в этом заключалась. Я же говорю, что оно прекрасно работает если вызывать не paint а например некий paint2 код которого иной


Сергей М.   (2009-11-02 14:05:00) [58]


> то он может біть исключительно private


С чего бы вдруг ?

Если это метод, то он м.б. и приватный, и защищенный, и публичный


yantar92   (2009-11-02 14:04:00) [59]

ну если єто метод, как ті говоришь, то он может біть исключительно private, либо я чего-то не понимаю


Сергей М.   (2009-11-02 14:03:00) [60]


> paint об"явлен в implementation а раньше нигде не оговорен.


А причем тут тогда private?


Страницы:   1 2 3 4

Наверх

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