spiller |
Отправлено: 19.10.2006, 22:55 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
Всем привет!
Понадобилось мне в прожке получить список всех источников ODBC на машине.
Нашел нормальную ссылку:
http://www.codenet.ru/db/other/odbc/
Но только не задача, когда пытаюсь скомпилировать проект, то получаю
QUOTE |
[Linker Error] 'C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\DSN_LISTBOX\MYODBC3.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
|
Нашел ссылку:
click
та господин Gedeon дает пояснения
первый вариант(просто обработать lib файл утилитой coff2omf.exe не помог
а во втором мне не понятно где брать файл опрелений .def?
Help please!
|
|
spiller |
Отправлено: 19.10.2006, 23:56 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
Разобрался
Также необходимо получить список установленных драйверов..
Вот такой код нашел:
CODE |
unsigned short wdMaxSize = 255;
unsigned short wdOut;
AnsiString drname;
char Buffer[256];
char *pszBuf = Buffer;
if(!SQLGetInstalledDrivers(Buffer, wdMaxSize, &wdOut)) return;
do
{
drname = (AnsiString)((char *)pszBuf); // Получаем имя каждого драйвера
pszBuf = strchr( pszBuf, '\0' ) + 1; // Проверяем на NULL
ListBox2->Items->Add(drname);
}
while( pszBuf[1] != '\0' );
|
Кстати, если я установил на машина Mysql ODBC Driver, то можно ли из программы вызвать его форму создания DSN?
Думаю сделать как-нибудь через WinExec... Вот только как найти исполняемый файл...
Отредактировано spiller — 20.10.2006, 00:56 |
|
AVC |
Отправлено: 20.10.2006, 08:24 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
CODE |
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
//
// Заполнить список пар ODBCName, drivername из системного реестра
// по ключу HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources
// Отсортитрован по ODBCName
// odbclist -> Code N: п/п от 1
// Name ODBC_Name
// Mnemo Driver_Name
// Name1 "ODBC_Name (Driver_Name)"
//- — - — - — - — - — - — - — - — - — - — - — - — - — - — - — - — - — - — - -
PACKAGE void __fastcall GetODBCList (TTinyPrompt *odbclist)
{
if (!odbclist) return;
TStringList *slist = new TStringList();
AnsiString drvname;
AnsiString regkey = "\Software\ODBC\ODBC.INI\ODBC Data Sources";
TRegistry *reg = new TRegistry();
odbclist->Clear();
try {
reg->RootKey = HKEY_CURRENT_USER;
if (reg->OpenKey(regkey,false))
{ reg->GetValueNames(slist);
slist->Sorted = true;
for (int i = 0; i < slist->Count; i++)
{ drvname = reg->ReadString(slist->Strings[i]);
odbclist->Add(i+1, slist->Strings[i], drvname,
0, slist->Strings[i]+ " (" + drvname + ")"
);
}
reg->CloseKey();
}
} // try
catch (Exception &xcp) { ShowMessage (xcp.Message); }
delete reg;
delete slist;
}
|
TTinyPrompt *odbclist это список структур. Нужно будет заменить на что-то свое.
|
|