| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Object Pascal: кроссплатформенные технологии > Области видимости в паскаль |
| Автор: powerfox 10.3.2007, 15:17 | ||||
| Привет! Я пока ещё серьёзного на паскале не писал, но вот начинаю. Я пишу модуль, замену стандартному. Много функций мне подходят из стандартного, но мне нужно чтобы в начале их выполнения и в конце вызывалось по процедуре. Дописать в стандартные функции возможности нет (можно их копировать к себе, но нежелательно). Вот пример того, что я хочу:
my_graph.pas:
В С++ я бы просто включил бы стандартный модуль (тонее заголовок) в пространство имён и вызывал бы standart_module::line. |
| Автор: Sartorius 10.3.2007, 16:43 |
| Так в чем проблема? В своем модуле подключай стандартный и вызывай его функции. Но свои придется переименовать. ведь не понятно будет для компилятора рекурсивное это обращение или вызов дальней функции. ЗЫ А ничего на подобии пространств имен я в паскале не припомню(( |
| Автор: powerfox 10.3.2007, 18:24 | ||
В этом и проблема. Что переименовывать нельзя. А класс в паскале позволяет делать так:
А внутри класса вставить юнит? |
| Автор: MBo 10.3.2007, 18:32 |
| полная квалификация идентификатора включает в себя имя модуля, т.е. ModuleName.FuncName (VarName) так что внутри своей процедуры напишешь Graph.line |
| Автор: powerfox 10.3.2007, 18:34 |
| А хотя бы сделать так: Функция A вызывает функцию B. B в видимости A, но B видин graph, который не видит A? Такое есть в языке? Добавлено @ 18:36 MBo, а при вызове моей line проблем не будет разве? Ведь graph будет подключён. |
| Автор: MBo 10.3.2007, 19:13 |
| > B видин graph, который не видит A uses graph в implementation >при вызове моей line проблем не будет разве? вызовешь my_graph.line - и никаких проблем. Если в uses есть и graph и my_graph, и ты напишешь просто line без квалификатора модуля, то вызовется процедура из последнего по списку uses А вообще - ты создаешь проблемы какие-то на пустом месте. |
| Автор: powerfox 10.3.2007, 20:18 |
Спасибо. Я не подумал, что видно только то, что определено интерфейсом. Не писал на пасаль почти ничего серьёзного. Нужно именно line. Нужна полная совместимость с кодом под graph. А копирование кода line в мою line с добавлением нужных вызовов нежелательно, так как оба модуля с одного проекта и это нежелательно. |
| Автор: powerfox 12.3.2007, 00:30 |
| В общем, кроме включения существующего кода, другого способа я не вижу. При вызове стандартной line она вызовет стандартный PutPixel, что недопустимо. Добавлено @ 00:30 P.S. Начну писать, там и видно будет... |
| Автор: Sartorius 12.3.2007, 14:11 |
| Возьми С-ный graphics.lib или как он там называется. Подключи его к проекту и не парься с модулями ЗЫ там же все теже самые функции, его же тоже борланд писал. |
| Автор: powerfox 12.3.2007, 19:33 |
| Sartorius, сам проект и есть написать sdlgraph |