![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание системного DNS [D7]
Константин_ © (2006-11-09 09:25:00)Можно ли программно создать и настроить системный DNS ?
Anatoly Podgoretsky (2006-11-09 13:04:00) [1]> Jeer (09.11.2006 11:38:06) [6]
А я ему оставил место для работы, направление знает.
sniknik (2006-11-09 11:57:00) [2]> а можно узнать как?
а можно узнать зачем? т.е. для чего (какой базы), какой доступ используется, навой разработке/дорабатываемой и т.д. ... т.е. почему именно ODBC? в то время когда его уже не рекомендуют к использованию... (хотя, пока еще не категорически ;), как BDE)
alexeis (2006-11-09 11:55:00) [3]у меня такое работало :-)
procedure InitDSN;
type
TSQLConfigDataSource = function (hwndParent: Integer;fRequest: Integer;
lpszDriverString: string;lpszAttributes: string): Smallint; stdcall;
const
ODBC_ADD_DSN :integer = 1; // Добавляем источник данных
ODBC_CONFIG_DSN :integer = 2; // Конфигурируем (редактируем) источник данных
ODBC_REMOVE_DSN :integer = 3; // Удаляем источник данных
ODBC_ADD_SYS_DSN :integer = 4; // Добавляем системный DSN
ODBC_CONFIG_SYS_DSN :integer = 5; // Конфигурируем системный DSN
ODBC_REMOVE_SYS_DSN :integer = 6; // удаляем системный DSN
var pFn: TSQLConfigDataSource;
hLib: LongWord;
strDriver: string;
strHome: string;
strAttr: string;
strFile: string;
fResult: integer;
ModName: array[0..MAX_PATH] of Char;
srInfo : TSearchRec;
function SQLConfigDataSource(hwndParent: Integer; fRequest: Integer;
lpszDriverString: string; lpszAttributes: string): Integer; stdcall;
var
func: TSQLConfigDataSource;
OdbccpHMODULE: HMODULE;
sdir:string;
begin
setLength(sdir,144);
if GetSystemDirectory(Pchar(sdir),144)<>0 then
SetLength(sdir,StrLen(Pchar(sdir)));
sdir := sdir+'\odbccp32.dll';
OdbccpHMODULE := LoadLibrary(Pchar(sdir));
if OdbccpHMODULE = 0 then
raise Exception.Create(SysErrorMessage(GetLastError));
func := GetProcAddress(OdbccpHMODULE, PChar('SQLConfigDataSource'));
if @func = nil then
raise Exception.Create('Error Getting adress for SQLConfigDataSource'+
SysErrorMessage(GetLastError));
Result := func(hwndParent, fRequest, lpszDriverString, lpszAttributes);
FreeLibrary(OdbccpHMODULE);
end;
begin
Windows.GetModuleFileName( HInstance, ModName, SizeOf(ModName) );
strHome := ModName;
while ( strHome[length(strHome)] <> '\' ) do
Delete( strHome, length(strHome), 1 );
strFile := strHome + 'blablabla.txt';
hLib := LoadLibrary( 'ODBCCP32' ); // загружаем библиотеку (путь по умолчанию)
if( hLib <> NULL ) then
begin
@pFn := GetProcAddress( hLib, 'SQLConfigDataSource' );
if( @pFn <> nil ) then
begin
// начинаем создание DSN
strDriver := 'Microsoft Text Driver (*.txt; *.csv)';
strAttr := Format( 'DSN=LiderDSN'+#0+
'Exclusive=0'+#0+
'Description=Test Data'+#0+
'Extensions=txt'+#0+
'DefaultDir='+path_base+#0+#0,
[strFile] );
fResult := pFn( 0, ODBC_ADD_SYS_DSN, strDriver,strAttr);
if( fResult = 0 ) then
ShowMessage( 'Ошибка создания DSN (Datasource) !' );
end;
end;
end;
Jeer (2006-11-09 11:38:00) [4]
> Anatoly Podgoretsky © (09.11.06 11:21) [5]
Ну пусть хоть немного потрудится:)
Anatoly Podgoretsky (2006-11-09 11:21:00) [5]Известно куда, в ИНИ файлы
Jeer (2006-11-09 10:45:00) [6]Создай руками, посмотри куда это влетело, сделай аналогичное программно.
Константин_ (2006-11-09 10:32:00) [7]Упс... прошу прощения, не DNS а DSN создать надо
Константин_ (2006-11-09 10:25:00) [8]2 DVM
а можно узнать как?
DVM (2006-11-09 10:06:00) [9]Можно