Gracias por la respuesta
Jejeje, en parte tienes razon, el problema es que no te he puesto la UNIT entera. Ahora, se que no es problema del STDCALL ya que el mismo codigo en otro ordenador no salta la CPU, es algo de mi Delphi que se ha vuelto revoltoso.
Os pongo la unit entera
Código:
{
Unit que imprementa la dll odbccp32.dll en donde estan las funciones
del api de windows para administrar alias odbc
}
unit AdminMyODBC;
interface
uses
Windows;
// constantes utilizadas en la dll odbccp32.dll
Const
ODBC_ADD_DSN=1;
ODBC_CONFIG_DSN=2;
ODBC_REMOVE_DSN=3;
ODBC_ADD_SYS_DSN=4;
ODBC_CONFIG_SYS_DSN=5;
ODBC_REMOVE_SYS_DSN=6;
ODBC_REMOVE_DEFAULT_DSN=7;
// funciones declaradas en la dll odbccp32.dll
function SQLConfigDataSource(HwndParent:HWND;FRequest:WORD;Driver:PChar;Attributes:Pchar):boolean;Stdcall;
// crear ODBC Mysql
function CreaMyODBC(const Nombre, Descripcion, servidor, bd, usuario, password: string): Boolean;
// borrar ODBC Mysql
function BorraMyODBC(const Nombre, Descripcion, servidor, bd, usuario, password: string): Boolean;
implementation
function SQLConfigDataSource; external 'odbccp32.dll' name 'SQLConfigDataSource';
function CreaMyODBC(const Nombre, Descripcion, servidor, bd, usuario, password: string): Boolean;
begin
Result := SQLConfigDataSource(
0,
ODBC_ADD_DSN,
'MySQL ODBC 3.51 Driver',
PChar(
'DSN=' + nombre + #0 +
'Description=' + Descripcion + #0 +
'Server=' + servidor + #0 +
'Database=' + bd + #0 +
'User=' + usuario + #0 +
'Password=' + password + #0
)
);
End;
function BorraMyODBC(const Nombre, Descripcion, servidor, bd, usuario, password: string): Boolean;
begin
Result := SQLConfigDataSource(
0,
ODBC_REMOVE_DSN,
'MySQL ODBC 3.51 Driver',
PChar(
'DSN=' + nombre + #0 +
'Description=' + Descripcion + #0 +
'Server=' + servidor + #0 +
'Database=' + bd + #0 +
'User=' + usuario + #0 +
'Password=' + password + #0
)
);
end;