Microsoft Paradox Driver (ODBC) のシステム DSN をプログラムで追加しようとしていますが、SQLConfigDataSource の属性パラメーターで渡す必要があるキーに関するドキュメントが見つかりません。MS Access システム DSN を正常に追加できますが、これは、キー (DBQ など) を含む例が多数あるためです。動作しない私のコード (Delphi) を以下に示します。
多数の異なるキーを試しましたが、成功しませんでした。たとえば、レジストリの HKEY_LOCAL_MACHINE\Software\Wow6432Node\ODBC\ODBC.INI (32 ビット ODBC) の下に表示される名前と値のペアを調べましたが、解決には至りませんでした。
プログラムで Paradox システム DSN を作成するために SQLConfigDataSource の lpszAttributes パラメータに渡す必要があるキーを知っている人はいますか?
function SQLConfigDataSource (
hwndParent: SQLHWnd;
fRequest: WORD;
lpszDriver: PChar;
lpszAttributes: PChar
): SQLBOOL; {$IFDEF MSWINDOWS} stdcall {$ELSE} cdecl {$ENDIF};
external 'odbccp32.dll' name 'SQLConfigDataSourceW';
procedure TForm1.Button1Click(Sender: TObject);
var
Attributes: string;
RetVal: Boolean;
begin
Attributes := 'DSN=' + 'Paradox Data#0;
Attributes := Attributes + 'DESCRIPTION=Paradox DSN for sample data'#0;
Attributes := Attributes + 'DEFAULTDIR=c:\Users\Public\Documents\RAD Studio\12.0\Samples\Data'#0#0;
RetVal := SqlConfigDataSource(0, ODBC_ADD_SYS_DSN, 'Microsoft Paradox Driver (*.db)', PChar(Attributes));
if not RetVal then
ShowMessage('Could not add DSN');
end;
私は最初にここで回答を報告しましたが、warrenp と crefird の両方が、私自身の質問に回答することを提案しました (クレジットは crefird にありますが)。以下に私の答えがあります。