![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
stdcall
Gu © (2012-01-06 00:28:00)в dll есть несколько юнитов, которые друг-друга юзают + в них есть экспорт процедур.
например
unit1;
..
Function MyXY(x,y:integer):integer; stdcall;
Exports MyXy;
implementation
Function MyXY(x,y:integer):integer;
begin
result:=x+y;
end;
uniit2;
uses unit1;
...
implementation
Procedure MyPrc;
var a,b,z:integer;
begin
...
z:=MyXy(a,b);
end;
Вопрос: будет ли влиять на внутренние функции (или еще на что) обращение к процедурам, которые идут на экспорт?
Или лучше сделать так (для внутреннего и внешнего использования писать отдельные процедуры):
unit1;
..
Function MyXY(x,y:integer):integer; stdcall;
Function MyXYTmp(x,y:integer):integer;
Exports MyXy;
implementation
Function MyXYTmp(x,y:integer):integer;
begin
result:=x+y;
end;
Function MyXY(x,y:integer):integer;
begin
result:=MyXYTmp(x,y);
end;
uniit2;
uses unit1;
...
implementation
Procedure MyPrc;
var a,b,z:integer;
begin
...
z:=MyXyTmp(a,b);
end;
Gu (2012-01-06 01:30:00) [1]понятно
RWolf (2012-01-06 01:22:00) [2]никакой разницы между вызовом «внутренней» и «импортированной» функции нет, с точностью до соглашения о вызове (stdcall и проч.).
DVM (2012-01-06 01:15:00) [3]
> Gu (06.01.12 01:13) [4]
> вызывть функцию помеченую stdcall и идущую на экспорт
т.е тебя беспокоит только то, что у функции указано соглашение stdcall?
Gu (2012-01-06 01:13:00) [4]не, речь идет о том, что "вызывать функцию" и "вызывть функцию помеченую stdcall и идущую на экспорт", а не вызывать функцию через обертку.
DVM (2012-01-06 01:03:00) [5]
> Gu (06.01.12 00:53) [2]
какая разница будешь ли ты вызывать функцию напрямую или через еще одну обертку над ней?
Gu (2012-01-06 00:53:00) [6]в приведенном - да, а если функции - тяжелые, с кучей сложных параметров и тп.? т.е. имеет ли смысл их выностить в отдельные процедуры, к которым потом обращаться во внутренних юнитах и еще отдельными процедурами их на экспорт отправлять?
DVM (2012-01-06 00:47:00) [7]В приведенном примере все равно, второй вариант особого смысла не имеет.
Такого рода вещи обычно появляются когда надо сохранить неизменным внешний интерфейс, при меняющемся внутреннем. Ну типа WinApi и NativeApi