Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Области видимости в паскаль, 2 функции с одинаковыми параметрами 
V
    Опции темы
powerfox
Дата 10.3.2007, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Привет! Я пока ещё серьёзного на паскале не писал, но вот начинаю.
Я пишу модуль, замену стандартному. Много функций мне подходят из стандартного, но мне нужно чтобы в начале их выполнения и в конце вызывалось по процедуре. Дописать в стандартные функции возможности нет (можно их копировать к себе, но нежелательно). Вот пример того, что я хочу:

Код

program test
uses my_graph;
...
line(x1,y1,x2,y2);


my_graph.pas:
Код

...
procedure line(x,y,x1,y1:Integer);
begin
SomeMyProcedure();
line (из стандартного graph);
SomeMyProcedure2();
end;


В С++ я бы просто включил бы стандартный модуль (тонее заголовок) в пространство имён и вызывал бы standart_module::line.



Это сообщение отредактировал(а) powerfox - 10.3.2007, 15:17


--------------------
user posted image
PM WWW   Вверх
Sartorius
Дата 10.3.2007, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Так в чем проблема? В своем модуле подключай стандартный и вызывай его функции. Но свои придется переименовать. ведь не понятно будет для компилятора рекурсивное это обращение или вызов дальней функции.
ЗЫ А ничего на подобии пространств имен я в паскале не припомню((

Это сообщение отредактировал(а) Sartorius - 10.3.2007, 16:44
PM MAIL ICQ   Вверх
powerfox
Дата 10.3.2007, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Цитата(Sartorius @  10.3.2007,  17:43 Найти цитируемый пост)
Но свои придется переименовать.

В этом и проблема. Что переименовывать нельзя.
А класс в паскале позволяет делать так:
Код

CLASNAME.function

А внутри класса вставить юнит?


--------------------
user posted image
PM WWW   Вверх
MBo
Дата 10.3.2007, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: нет
Всего: 18



полная квалификация идентификатора включает в себя имя модуля, т.е. 
ModuleName.FuncName (VarName)

так что внутри своей процедуры напишешь
Graph.line


PM MAIL   Вверх
powerfox
Дата 10.3.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



А хотя бы сделать так:
Функция A вызывает функцию B. B в видимости A, но B видин graph, который не видит A? Такое есть в языке?

Добавлено @ 18:36 
MBo, а при вызове моей line проблем не будет разве? Ведь graph будет подключён.


--------------------
user posted image
PM WWW   Вверх
MBo
Дата 10.3.2007, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 234
Регистрация: 10.6.2002

Репутация: нет
Всего: 18



> B видин graph, который не видит A
uses graph в implementation

>при вызове моей line проблем не будет разве?
вызовешь my_graph.line - и никаких проблем.
Если в uses есть и graph и my_graph, и ты напишешь просто line без квалификатора модуля, то вызовется процедура из последнего по списку uses


А вообще - ты создаешь проблемы какие-то на пустом месте.
PM MAIL   Вверх
powerfox
Дата 10.3.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Цитата(MBo @  10.3.2007,  20:13 Найти цитируемый пост)
> B видин graph, который не видит Auses graph в implementation

Спасибо. Я не подумал, что видно только то, что определено интерфейсом. Не писал на пасаль почти ничего серьёзного.


Цитата(MBo @  10.3.2007,  20:13 Найти цитируемый пост)
вызовешь my_graph.line - и никаких проблем.

Цитата(MBo @  10.3.2007,  20:13 Найти цитируемый пост)
А вообще - ты создаешь проблемы какие-то на пустом месте.

Нужно именно line. Нужна полная совместимость с кодом под graph. А копирование кода line в мою line с добавлением нужных вызовов нежелательно, так как оба модуля с одного проекта и это нежелательно.



--------------------
user posted image
PM WWW   Вверх
powerfox
Дата 12.3.2007, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



В общем, кроме включения существующего кода, другого способа я не вижу. При вызове стандартной line она вызовет стандартный PutPixel, что недопустимо.

Добавлено @ 00:30 
P.S. Начну писать, там и видно будет...


--------------------
user posted image
PM WWW   Вверх
Sartorius
Дата 12.3.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: нет
Всего: 37



 Возьми С-ный graphics.lib или как он там называется. Подключи его к проекту и не парься с модулями

ЗЫ там же все теже самые функции, его же тоже борланд писал.
PM MAIL ICQ   Вверх
powerfox
Дата 12.3.2007, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 97



Sartorius, сам проект и есть написать sdlgraph smile Ребятам с fpc идея, кажется, понравилась. Вот я и прикидываю, что и как писать. 


--------------------
user posted image
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0566 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.