Главная страница
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.039 c
1-1082234534
Игорь
2004-04-18 00:42
2004.04.11
Как добавить данные в меню на выпадающем меню, на рабочем столе?


7-1075466978
sVic
2004-01-30 15:49
2004.04.11
Как убить сервис в Win2000(XP)?


9-1064557030
Darthman
2003-09-26 10:17
2004.04.11
PowerDraw


6-1079072700
BaDeVlad
2004-03-12 09:25
2004.04.11
Как отправить письмо с вложением?


3-1081770759
Balkon
2004-04-12 15:52
2004.04.11
Массивы в Базе данных.