Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];

Вниз

ADOConnection и иже с ним   Найти похожие ветки 

 
Egor111   (2002-03-04 21:35) [0]

Ребят, помогите!!!
Нужно создавать ADOConnecion и ADOQuery в .dll
и соответственно работать там с ними.Как?


 
sniknik   (2002-03-05 00:03) [1]

Ну примерно так, можно и по другому, разбирайся и если что пиши

function DllInit(Own: TComponent; ConString: WideString): Boolean; stdcall; {***}
var List:TStrings;
begin
DllOwner:= Own;
if not DirectoryExists(InPath) then ForceDirectories(InPath);
if not DirectoryExists(OutPath) then ForceDirectories(OutPath);
Result:= False;
try
{ADO}
SQLConnect:= TADOConnection.Create(DllOwner);
SQLConnect.LoginPrompt:= False;
SQLConnect.ConnectionString:= ConString;
SQLConnect.CursorLocation:= clUseServer;
TablesList:= TStringList.Create;
SQLConnect.GetTableNames(TablesList);
SQLCommand:= TADOCommand.Create(DllOwner);
SQLCommand.Connection:= SQLConnect;
SQLDataSet:= TADODataSet.Create(DllOwner);
SQLDataSet.Connection:= SQLConnect;
CreateInFiles;
CreateOutFiles;
{BDE}
TableIn:= TTable.Create(DllOwner);
TableIn.DatabaseName:= InPath;
TableOut:= TTable.Create(DllOwner);
TableOut.DatabaseName:= OutPath;
List:= TStringList.Create;
List.Add ("LANGDRIVER=db866ru0");
Session.ModifyDriver("DBASE",List);
List.Free;
Result:= True;
ErrMessage:= "Инициализация завершена.";
except
on E: EADOError do ErrMessage:= E.Message;
on E: EOleException do ErrMessage:= E.Message;
on E: EDataBaseError do ErrMessage:= E.Message;
else ErrMessage:= "Неизвестная ошибка!";
end;
end;

function DllClose: Boolean; stdcall;
begin
TablesList.Free;
DllClose:= True;
end;


 
Egor111   (2002-03-05 16:19) [2]

Спасибо!
Слушай, это все понятно, а
надо ли при этом указывать дополнительные
модули в uses(dll)?


 
sniknik   (2002-03-05 16:48) [3]

Не совсем понял зачем dll в uses указывать? На всякий случай простой пример вызова.

Это описание Dll.
library MyDll;
uses Windows;

function SomeFunc(I: Integer): Integer; stdcall;
begin
if Odd(I) then Result := 3 * I + 1
else Result := I div 2;
end;

exports
SomeFunc;

begin
end.

Это модуль где он подключается.
unit MyDllImport;
interface
uses Windows;

function SomeFunc(I: Integer): Integer; stdcall;

implementation

function SomeFunc; external "mydll.dll"; { <- вот ссылка на саму Dll }

end.

а вот этот модуль можно и uses указать (хотя ничто не мешает ссылку описать прям там где используеш модуль, программа все равно)

по разному можно. я чаще использую динамическую привязку вот так GetInfo:= GetProcAddress(DllHandle, "GetInfo");
GetInfo здесь типа фунции с параметрами как в Dll описана
GetInfo: function: PChar; stdcall;
и последнее хендл получаеш так
DllHandle:= LoadLibrary("d:\dlls\MyDll.Dll"));
(немного сложней а выгоды большие)



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

Форум: "Базы";
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.005 c
1-80
GenBr
2002-03-18 13:22
2002.04.01
Меню


14-308
UGH|B1ADE
2002-02-17 20:42
2002.04.01
Хелп плиззз !SOS!


3-17
Gromozeka
2002-03-06 10:32
2002.04.01
Не отражаются данные в DBLookupComboBox e


3-24
de
2002-03-06 14:52
2002.04.01
Как сделать выпадающий список в DBGridEh?


14-311
Kozhanov
2002-02-19 13:54
2002.04.01
---|Ветка была без названия|---





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