![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюки с вызовом процедуры по ссылке [D7, XP]
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?