Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание системного 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]

Можно


Наверх

Титульная страница Поиск, карта сайта Написать письмо