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

Вниз

stdcall   Найти похожие ветки 

 
Gu   (2012-01-06 00:28) [0]

в 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;


 
DVM ©   (2012-01-06 00:47) [1]

В приведенном примере все равно, второй вариант особого смысла не имеет.

Такого рода вещи обычно появляются когда надо сохранить неизменным внешний интерфейс, при меняющемся внутреннем. Ну типа WinApi и NativeApi


 
Gu   (2012-01-06 00:53) [2]

в приведенном - да, а если функции - тяжелые, с кучей сложных параметров и тп.? т.е. имеет ли смысл их выностить в отдельные процедуры, к которым потом обращаться во внутренних юнитах и еще отдельными процедурами их на экспорт отправлять?


 
DVM ©   (2012-01-06 01:03) [3]


> Gu   (06.01.12 00:53) [2]

какая разница будешь ли ты вызывать функцию напрямую или через еще одну обертку над ней?


 
Gu   (2012-01-06 01:13) [4]

не, речь идет о том, что "вызывать функцию" и "вызывть функцию помеченую stdcall и идущую на экспорт", а не вызывать функцию через обертку.


 
DVM ©   (2012-01-06 01:15) [5]


> Gu   (06.01.12 01:13) [4]


> вызывть функцию помеченую stdcall и идущую на экспорт

т.е тебя беспокоит только то, что у функции указано соглашение stdcall?


 
RWolf ©   (2012-01-06 01:22) [6]

никакой разницы между вызовом «внутренней» и «импортированной» функции нет, с точностью до соглашения о вызове (stdcall и проч.).


 
Gu   (2012-01-06 01:30) [7]

понятно



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

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

Наверх




Память: 0.48 MB
Время: 0.015 c
2-1326061288
Anthony
2012-01-09 02:21
2012.05.06
Как узнать что в буфере обмена Windows есть текст?


15-1325001832
Pavia
2011-12-27 20:03
2012.05.06
Как проще?


9-1191964532
Help me!
2007-10-10 01:15
2012.05.06
Math либа для работы с векторами и матрицами.


15-1325104202
Юрий
2011-12-29 00:30
2012.05.06
С днем рождения ! 29 декабря 2011 четверг


2-1325423630
Andvitar
2012-01-01 17:13
2012.05.06
как сделать ссылку на сайт в форме