Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];
ВнизРабота с 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c