Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-2047
Evyshka
2004-01-05 16:50
2004.02.02
Связь кнопки с гридом


3-2001
Марат
2004-01-07 14:44
2004.02.02
Объединение запросов


14-2330
VID
2004-01-10 01:17
2004.02.02
Окончательная и безоговорочная РУСИФИКАЦИЯ Windows 2000


3-1957
Виталий
2004-01-09 15:52
2004.02.02
ApplyUpdates


4-2420
Вадим
2003-11-25 10:00
2004.02.02
Поверх всех окон





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