Главная страница
    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
1-2095
Floppy
2004-01-20 08:36
2004.02.02
Как определить, кем запущено приложение, непосредственно


6-2238
Kinder
2003-11-27 22:47
2004.02.02
стандартное окно дозвона


1-2160
Dysan
2004-01-21 15:08
2004.02.02
regsvr32 и class ?


14-2272
BKGG
2004-01-13 12:11
2004.02.02
Скажите пожалусто, от кудо можно скачать дизассемблер.


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