Главная страница
    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-1325708746
cardon
2012-01-05 00:25
2012.05.06
Сортировка StringGrid по времени


2-1325577531
defen
2012-01-03 11:58
2012.05.06
CRC


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


15-1325501041
Делфиец
2012-01-02 14:44
2012.05.06
Ищу работу программиста


2-1326089711
Псарь
2012-01-09 10:15
2012.05.06
Свой Event Log.





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