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

Вниз

Работа с dll   Найти похожие ветки 

 
arximed ©   (2004-01-20 10:36) [0]

Доброго время суток мастера подскажите пожалуста как в dll использовать внутреннею функцию или процедуру т.е. расположенную в самом модуле и вызываемую из экспортируемой функуии


 
AKul ©   (2004-01-20 10:39) [1]

А что мешает экспортировать и ее?


 
arximed ©   (2004-01-20 10:44) [2]

она нужна именно в этом модуле для функции


 
Digitman ©   (2004-01-20 10:45) [3]

DLL с исходниками ?


 
PVOzerski ©   (2004-01-20 10:46) [4]

Если "самим модулем" названо приложение, вызывающее функцию из DLL, то здесь есть два варианта: либо как в [1], либо использовать технологию callback"ов, т. е. передавать в dll как параметр функции адрес точки входа (AKA процедурную переменную) этой самой "внутренней функции".


 
arximed ©   (2004-01-20 10:48) [5]

да, сам пишу для использования в VB


 
arximed ©   (2004-01-20 10:58) [6]

надо вызвать из Familiy функцию RemoveBlanks дельфа ругаеться
выдает Undeclared identifier: "RemoveBlankss"где её нужно объявить?

library RussEngl;

uses
SysUtils,Windows;

{$R *.res}

function Familiy(sFam : string; var sFamili: String ): Boolean; stdcall;
begin
ToRemoveBlanks
end;

function RemoveBlanks(sFam : string; var sFamili: String):boolean; stdcall;
begin

end;

Exports
Familiy;
begin
end.


 
AKul ©   (2004-01-20 11:03) [7]

А RemoveBlanks описывать перед использованием не пробовал?


 
AKul ©   (2004-01-20 11:07) [8]

Поствать объявление RemoveBlanks перед Familiy.


 
Digitman ©   (2004-01-20 11:09) [9]


> arximed


любопытно, при чем здесь именно DLL ? а если бы код этот в EXE-проекте, так же в dpr-файле как и в дан.случае, то как бы ты поступил при этом ?


 
arximed ©   (2004-01-20 11:13) [10]

пробовал по всякому и в верху и в низу все равно з..аза ругаеться


 
Digitman ©   (2004-01-20 11:14) [11]

Вариант 1:

function RemoveBlanks(sFam : string; var sFamili: String):boolean; stdcall;
begin

end;

function Familiy(sFam : string; var sFamili: String ): Boolean; stdcall;
begin
RemoveBlanks(...);
end;

Вариант 2:

function Familiy(sFam : string; var sFamili: String ): Boolean; stdcall; forward;

function Familiy(sFam : string; var sFamili: String ): Boolean; stdcall;
begin
RemoveBlanks(...);
end;

function RemoveBlanks(sFam : string; var sFamili: String):boolean; stdcall;
begin

end;


 
arximed ©   (2004-01-20 11:15) [12]

в exe файле присутсутвут вроде области объявления а в dll почему-то нет


 
AKul ©   (2004-01-20 11:16) [13]

Delphi ругается Undeclared identifier, если идентификатор который ты используешь не был описан до этого.
Проверь совпадает ли у тебя имя в описании и имя в вызове.


 
Digitman ©   (2004-01-20 11:18) [14]


> arximed


какие такие "области объявления" ? раздел INTERFACE что ли ?

так ведь этот раздел допустимо объявлять только в юните, но никак не в файле проекта !

если это тебе удобно, то почему нельзя в DLL-проект добавить новый юнит ? там есть тот раздел, который тебе знаком


 
arximed ©   (2004-01-20 11:25) [15]

Спасибо большое Digitman все получилось с первым вариантом СПАСИБО


 
Digitman ©   (2004-01-20 11:29) [16]


> arximed


непонятно только, для чего объявлять RemoveBlanks как stdcall ... ты же не экспортиуешь ее, как признался


 
arximed ©   (2004-01-20 11:31) [17]

Это я описался я её как stdcall неоъявляю


 
Digitman ©   (2004-01-20 11:36) [18]


> arximed


может ты и по поводу параметров эксп.ф-ции, объявленных как

sFam : string; var sFamili: String

описался ?

ведь работать это совместно с VB не будет


 
arximed ©   (2004-01-20 12:04) [19]

работает еще как


 
arximed ©   (2004-01-20 12:08) [20]

Declare Function Familiy Lib "RussEngl.dll" (ByVal sFam As String, ByRef sFamili As String) As Boolean это декларация в VB


 
Digitman ©   (2004-01-20 12:29) [21]


> работает еще как


тип String в VB и тип String (= AnsiString при {$H-}) в OP - разные типы, несовместимые на уровне упр.структур



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

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

Наверх




Память: 0.51 MB
Время: 0.016 c
3-1974
Петр
2004-01-09 10:13
2004.02.02
Ошибка с ADOQuery


14-2319
ghg
2003-12-22 15:41
2004.02.02
звук со звуковухи в файл mp3


11-2049
microlab
2003-05-18 20:53
2004.02.02
Как отобразить HTML


7-2394
DimaK
2003-11-14 14:55
2004.02.02
Системное время


1-2208
DmitryA
2004-01-20 17:12
2004.02.02
ScrollBar в ComboBox