Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.05.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
2-1325748771
de_guta
2012-01-05 11:32
2012.05.06
3 позиции checkbox


15-1325449802
Юрий
2012-01-02 00:30
2012.05.06
С днем рождения ! 2 января 2012 понедельник


6-1255618941
sloosar
2009-10-15 19:02
2012.05.06
WinInet


15-1325241253
Jeer
2011-12-30 14:34
2012.05.06
С наступающим Новым Годом, друзья !


2-1326020364
Gu
2012-01-08 14:59
2012.05.06
dllmain vs init-final





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский