Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Delphi,Описание процедуры

Ответить
Настройки темы
Delphi - Delphi,Описание процедуры

Старожил


Сообщения: 225
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как описать процедуру, чтобы в ней были такие параметры, которые можно было бы не задавать при вызове данной процедуры или функции?

[s]Исправлено: Roman Go, 19:12 29-01-2003[/s]

-------
Нет такой плохой ситуации, которая не могла бы стать еще хуже.


Отправлено: 19:08, 29-01-2003

 

Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Crew
В случае int Dummy = DefaultDummyValue - да, она этого вообще не должна заметить. Подставляет правильный вызов компилятор, в функцию все равно уходит нужное количество параметров, просто не указанные руками заменяются на дефолтные значения.

В случае __cdecl, как в твоем случае, имхо нереально. Но выход есть: передать первым параметром число последующих и описать функцию как __stdcall.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 09:05, 23-02-2003 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 163
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата:
В случае __cdecl, как в твоем случае, имхо нереально. Но выход есть: передать первым параметром число последующих и описать функцию как __stdcall.
Несмотря на обилие прочитанной литературы, единственное, что я знаю, что есть вызов Аля Паскаль и Аля Си, которые отличаются друг от друга порядком передачи своих параметров
Если не сложно в двух словах что это за __cdecl и чем __stdcall лучше в данном случае.


А без указания точного количества параметров значит не получится , а жаль.

-------
"Сколь бы сложной ни казалась проблема на первый взгляд, она, если правильно к ней подойти, окажется еще более сложной" - Пол Андерсон


Отправлено: 22:18, 23-02-2003 | #12


Монголо-татар


Сообщения: 117
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


vasketsov
Crew
я тогда чего-то не догоняю...
получается что делфя не полностью совместима с винАпи?

-------
* * * * * * * * Мы - это наши желания. Зигмунд Фрейд


Отправлено: 09:04, 24-02-2003 | #13


Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


Crew
Способов передачи параметров много, более того, не все имеют названия.

1) Стек может очищаться как вызывающей функцией (__cdecl), так и вызываемой (_stdcall). Если функция вызывается часто, выгоднее, чтоб она сама очищала стек (почти весь WINAPI такой). Естественно, стек может очищать только та сторона, которая знает о размере переданных параметров.

2) Параметры могут передаваться в стеке в прямом и в обратном порядке.

3) Переметры могут передаваться не только через стек, но и через регистры (один и более, часто EAX или EAX/EDX). Сюда относится __fastcall и обычные паскалевские функции с небольшим числом стандартных аргументов.

4) Есть еще очень интересный способ передачи параметров, используемый при переходе в NT-системах в режим ядра. Все параметры передаются через один регистр, а именно, в него кладется указатель на первый параметр __stdcall-овской функции. Но без знания языка ассемблера такое самому руками, естественно, не написать, по крайней мере, мне не известен компилятор, понимающий такую модель вызова.

На самом деле Delphi Compiler знает много методов вызовов, так что попробую про них почитать во встроенной справке.

Ork Yason
Цитата:
получается что делфя не полностью совместима с винАпи?
Нифига подобного.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 11:52, 24-02-2003 | #14


Пользователь


Сообщения: 53
Благодарности: 0

Профиль | Отправить PM | Цитировать


А ни как если не использовать
встроенный ASM.

Отправлено: 00:04, 09-03-2003 | #15



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - Delphi,Описание процедуры

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Сбой при удаленном вызове процедуры Andrushind Microsoft Windows NT/2000/2003 4 15-09-2013 18:38
C/C++ - Перевод процедуры с Pascal на C++ Snake750 Программирование и базы данных 56 05-04-2011 09:39
Использование - Возврат процедуры активации Windows XP Craager Лицензирование продуктов Microsoft 6 06-03-2009 15:22
Вызов процедуры ToX Программирование и базы данных 10 24-07-2004 00:11




 
Переход