Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

stdcall Есть ли принципиальная разница ?   Найти похожие ветки 

 
Learner ©   (2004-04-20 09:00) [0]

Пишу так:
Type
TMyFunction=function(Param1:DWord;Param2:Ansistring;Param3:Boolean):Boolean;stdcall;

function TestFunction(Param1:DWord;Param2:Ansistring;Param3:Boolean):Boolean;stdcall;
begin
Result:=True;
end;

function BaseFunction(Par1:DWord;Par2:Ansistring;Par3:Boolean;MyFunction:TMyFunction):DWord;
begin
if MyFunction(Par1,Par2,Par3) then Result:=10 else Result:=20;
end;

Где-то:
ShowMessage(IntToStr(BaseFunction(0,"string",True,@TestFunction)));

Все работает, но все работает и, если убрать stdcall.
В чем разница ?


 
Anatoly Podgoretsky ©   (2004-04-20 09:02) [1]

В соглашениях вывод, смотри справку по ним, их имеется 6 штук.


 
MBo ©   (2004-04-20 09:04) [2]

Разницы в результате нет, если указано одно соглашение о вызове в обоих случаях.


 
SammIk ©   (2004-04-20 09:05) [3]

А ты попробуи не ставить, посмотришь что получится))
Скажем через 10-100 вызовов.
Разница в том как будет чистится стек, после их использования.
как передаются данные в ф-ю, как возвращаются .......


 
SammIk ©   (2004-04-20 09:06) [4]

Да простят мне боги если я не прав)


 
VAleksey ©   (2004-04-20 09:07) [5]

Зачем вообще употреблять соглашение о вызовах если функции в одном проекте?
Или я не прав?


 
Anatoly Podgoretsky ©   (2004-04-20 09:09) [6]

SammIk ©   (20.04.04 09:06) [4]
Да не прав, не получится и двух вызовов.


 
SammIk ©   (2004-04-20 09:15) [7]

У меня была ошибка, я вместо cdcal stdcall делал,
дак работала, могла и поболее раз выполнятся.
Раз на раз не приходится, иногда и спервого раза прога выподала
в рантаим ерор, но это потом я присек.
Так что могет и больше чем 1-2 раза выполнится, но мало вероятно)


 
Anatoly Podgoretsky ©   (2004-04-20 09:22) [8]

Ты камикадже или на рубашку есть надежда?


 
PVOzerski ©   (2004-04-20 09:57) [9]

SammIk ©   (20.04.04 09:15) [7]:
перепутать stdcall и cdecl - это особый случай. Дело в том, что ты параметры получишь правильно, а вот по выходе стек попортишь.



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.089 c
4-1075960605
Shi
2004-02-05 08:56
2004.04.11
Создан ли класс?


8-1069869678
Михайлов Антон
2003-11-26 21:01
2004.04.11
TV Capture Card


7-1076090147
!MS
2004-02-06 20:55
2004.04.11
Хеш текущего юзера


14-1078856622
VictorT
2004-03-09 21:23
2004.04.11
Не отправляется почта в The Bat


1-1080192480
ghostbusterr
2004-03-25 08:28
2004.04.11
Проблема DecimalSeparator