Главная страница
    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.002 c
2-1325903132
Gu
2012-01-07 06:25
2012.05.06
имена функций длл


2-1326069317
Gu
2012-01-09 04:35
2012.05.06
x64 str


15-1324526689
И. Павел
2011-12-22 08:04
2012.05.06
Сайт, сделанный на ucoz.ru


15-1325361710
Anatoly Podgoretsky
2012-01-01 00:01
2012.05.06
С Новым Годом


15-1325447864
Artem
2012-01-01 23:57
2012.05.06
Где можно скачать простой вычислитель арифметических выражений?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский