![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Правильна ли запись? [FB 2]
Евгений Р. © (2008-02-06 23:00:00)TFieldGetTextEvent(tslOnGetText.Objects[n])(sender,text,DisplayText);
Почемуто при ее наличии в конце процедуры имеем сообщение:
[Fatal Error] jDbUnit.pas(29): F2084 Internal Error: C4905
(Delphi 2005)
sniknik (2008-02-07 22:51:00) [1]> Всё значительно хуже: Self в вызваном методе будет неопределено.
о нем и думал, почему sender написал хз. ошибся.
DiamondShark (2008-02-07 20:55:00) [2]
> в данном случае sender значение при приведении будет неопределено
Всё значительно хуже: Self в вызваном методе будет неопределено.
> Евгений Р. (07.02.08 18:55) [12]
>
> > метод это структура из 2 указателей
>
> Если я правильно понял из [6,11]: вызывается Call code.
> При этом где-то в виду имеется ссылка на вызывающий объект
> Data?
Ссылка на метод -- это два указателя: один из них является указателем на тело метода, а другой -- указателем на экземпляр (то, что внутри метода представляется спецпеременной Self). Для корректного вызова метода нужны оба указателя.
> Я решил проблему через absolute
Показывай, как решил.
absolute чего с чем?
Сдаётся мне, что ничего ты не решил, а новый бред написал.
Евгений Р. (2008-02-07 18:55:00) [3]
> метод это структура из 2 указателей
Если я правильно понял из [6,11]: вызывается Call code. При этом где-то в виду имеется ссылка на вызывающий объект Data?
sniknik (2008-02-07 18:03:00) [4]> Метод для процессора - подпрограмма. Вызывается командой Call.
> т.е. call указатель.
не придумывай
TMethod = record
Code, Data: Pointer;
end;
> Какое минное поле?
в данном случае sender значение при приведении будет неопределено, но я вообщето имел в виду стиль.
Johnmen (2008-02-07 17:48:00) [5]Тогда конечный ответ на вопрос ветки
>Правильна ли запись?
Нет.
Евгений Р. (2008-02-07 17:45:00) [6]
> Johnmen © (07.02.08 17:27) [8]
> Интересно, а как ты запустил программу, если она даже не
> компилируется?
> [5]
> Я решил проблему через absolute
Johnmen (2008-02-07 17:27:00) [7]
> Евгений Р. (07.02.08 17:02) [7]
Интересно, а как ты запустил программу, если она даже не компилируется?
Евгений Р. (2008-02-07 17:02:00) [8]
> sniknik © (07.02.08 15:21) [6]
> указатель один, а метод это структура из 2 указателей...
> откуда у тебя возьмется значение для второго?
Метод для процессора - подпрограмма. Вызывается командой Call.
т.е. call указатель.
именно єтот указатель (один указатель) я и сохраняю в tSTringList.
Затем я его достаю и візіваю.
Поэтому это должно быть стабильно и работает стабильно. Только компилятор теряется.
> а кто тебя знает, решил или нет
Для этого Борланд придумал отладчик. По нему и видно, что вызывается нужная процедура и в нее передаются нужные параметры. Что еще? Какое минное поле?
sniknik (2008-02-07 15:21:00) [9]> А почему нельзя?
да почему нельзя? можно! если только со знанием дела и вдруг возникла такая необходимость (не представляю такую ситуацию...)
указатель один, а метод это структура из 2 указателей... откуда у тебя возьмется значение для второго? и где это вылезет, когда к нему будет обращение?...
это не программирование это бег на минном поле...
> Я решил проблему через absolute?
а кто тебя знает, решил или нет. и вообще - бред не решаем, его можно только заменить на действительно решение. (но для того чтобы дать решение нужно знать задачу... а в вопросе кроме бреда и ошибки от него и нет ничего)
> А как бы Вы поступили?
так думаю, он бы такого бреда не написал бы... и решать было бы нечего.
p.s. совет: выкини этот jDbUnit.pas пока не поздно, кто знает, что там еще при таком авторе ламере...
Евгений Р. (2008-02-07 14:29:00) [10]
> Johnmen © (07.02.08 09:18) [4]
> И опять же, что за бредовое приведение указателя к методу
> класса? Здесь любой компилятор охренеет...
А почему нельзя?
Я решил проблему через absolute?
А как бы Вы поступили?
Johnmen (2008-02-07 09:18:00) [11]
> Евгений Р. (06.02.08 23:56) [2]
Так это ты написал или профессор? Чей это юнит jDbUnit.pas?
И опять же, что за бредовое приведение указателя к методу класса? Здесь любой компилятор охренеет...
Anatoly Podgoretsky (2008-02-07 08:51:00) [12]> Евгений Р. (06.02.2008 23:00:00) [0]
Вроде бы мы не на СИ
Евгений Р. (2008-02-06 23:56:00) [13]
> А это что?
>
>
> откедова?
Вроде по русски написано, что это то (вызов процедуры), после чего компилятор выдает указанное сообщение. Похоже, не только студенты-недоучки бывают, но и чокнутые профессора.
Johnmen (2008-02-06 23:19:00) [14]Это ошибка работы с указателями в модуле jDbUnit.pas, написанном студентом-недоучкой.
А это что?
> TFieldGetTextEvent(tslOnGetText.Objects[n])(sender,text,
> DisplayText);
откедова?