你的函数定义少了一个stdcall,应该如下:
function SQLGetInstalledDrivers(lpszBuf: LPSTR; cbBufMax: WORD;
pcbBufOut: PWORD): BOOL; stdcall; external 'ODBCCP32.dll'
然后用就行了,试验通过了.
procedure TForm1.Button1Click(Sender: TObject);
var
Buff: array[0..2048] of char;
BuffOut: Word;
i: integer;
s: string;
begin
if SQLGetInstalledDrivers(Buff, 2048, @BuffOut) then
begin
s := '';
for i := 0 to Buffout do
begin
if Buff <> #0 then
s := s + Buff
else
begin
listbox1.Items.Add(s);
s := '';
end;
end;
end;
end;