Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Вниз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.
В чем разница ?
← →
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 штук.
← →
Anatoly Podgoretsky © (2004-04-20 09:02) [1]В соглашениях вывод, смотри справку по ним, их имеется 6 штук.
← →
MBo © (2004-04-20 09:04) [2]Разницы в результате нет, если указано одно соглашение о вызове в обоих случаях.
← →
MBo © (2004-04-20 09:04) [2]Разницы в результате нет, если указано одно соглашение о вызове в обоих случаях.
← →
SammIk © (2004-04-20 09:05) [3]А ты попробуи не ставить, посмотришь что получится))
Скажем через 10-100 вызовов.
Разница в том как будет чистится стек, после их использования.
как передаются данные в ф-ю, как возвращаются .......
← →
SammIk © (2004-04-20 09:05) [3]А ты попробуи не ставить, посмотришь что получится))
Скажем через 10-100 вызовов.
Разница в том как будет чистится стек, после их использования.
как передаются данные в ф-ю, как возвращаются .......
← →
SammIk © (2004-04-20 09:06) [4]Да простят мне боги если я не прав)
← →
SammIk © (2004-04-20 09:06) [4]Да простят мне боги если я не прав)
← →
VAleksey © (2004-04-20 09:07) [5]Зачем вообще употреблять соглашение о вызовах если функции в одном проекте?
Или я не прав?
← →
VAleksey © (2004-04-20 09:07) [5]Зачем вообще употреблять соглашение о вызовах если функции в одном проекте?
Или я не прав?
← →
Anatoly Podgoretsky © (2004-04-20 09:09) [6]SammIk © (20.04.04 09:06) [4]
Да не прав, не получится и двух вызовов.
← →
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 раза выполнится, но мало вероятно)
← →
SammIk © (2004-04-20 09:15) [7]У меня была ошибка, я вместо cdcal stdcall делал,
дак работала, могла и поболее раз выполнятся.
Раз на раз не приходится, иногда и спервого раза прога выподала
в рантаим ерор, но это потом я присек.
Так что могет и больше чем 1-2 раза выполнится, но мало вероятно)
← →
Anatoly Podgoretsky © (2004-04-20 09:22) [8]Ты камикадже или на рубашку есть надежда?
← →
Anatoly Podgoretsky © (2004-04-20 09:22) [8]Ты камикадже или на рубашку есть надежда?
← →
PVOzerski © (2004-04-20 09:57) [9]SammIk © (20.04.04 09:15) [7]:
перепутать stdcall и cdecl - это особый случай. Дело в том, что ты параметры получишь правильно, а вот по выходе стек попортишь.
← →
PVOzerski © (2004-04-20 09:57) [9]SammIk © (20.04.04 09:15) [7]:
перепутать stdcall и cdecl - это особый случай. Дело в том, что ты параметры получишь правильно, а вот по выходе стек попортишь.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.034 c