Ver Mensaje Individual
  #3  
Antiguo 18-05-2007
Edgtho Edgtho is offline
Miembro
 
Registrado: abr 2006
Posts: 47
Reputación: 0
Edgtho Va por buen camino
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;
__________________
Dios es real a menos que sea declarado entero
Responder Con Cita