Ver Mensaje Individual
  #1  
Antiguo 21-02-2008
Aldo Aldo is offline
Miembro
 
Registrado: ene 2004
Posts: 46
Reputación: 0
Aldo Va por buen camino
TSocketConnection y error "Interface not supported"

Hola a todos.

Os pongo en antecedentes. Es primera vez que estoy haciendo una aplicación en tres capas y me he decidido por probar a hacerlo con TSocketConnection en vez de con TDCOMConnection para evitar en el futuro los problemas típicos de seguridad en la red y temas relacionados con Cortafuegos, etc.

Estoy haciendo esta aplicación en Delphi 5 y tengo en la capa intermedia un Servidor TRemoteDataModule que tiene un método que se llama Connect con varios parámetros su declaración es la siguiente:
Código Delphi [-]
function Connect(const szUserName, szPassword: WideString; out pErrorMessages: ErrorMessages): HResult; safecall;

donde el parámetro pErrorMessages es una estructura en la que devolver los posibles errores que se pueden haber originado en el servidor de capa intermedia, su declaración es la siguiente:
Código Delphi [-]
ErrorMessages = packed record
    nAppErrorCode: Integer;
    szAppErrorMessage: WideString;
    nOtherErrorCode: Integer;
    szOtherErrorMessages: WideString;
  end;

Ahora bien. El error se produce en la aplicación cliente cuando intenta ejecutar el método Connect que me devuelve el siguiente mensaje de error Interface not supported. OJO. Este error solo dá cuando lo intento ejecutar con la conección establecida con el componente TSocketConnection, porque con el componente TDCOMConnection se ejecuta perfectamente.

El ejemplo del llamado en ambos casos es el siguiente:
Ejemplo con TDCOMConnection
Código Delphi [-]
var
   pErrorMessage : ErrorMessages;
   szUserName    ,
   szPassword    : WideString;
begin
   szUserName    := '';
   szPassword    := '';

   DCOMConnection1.Connected := True;
   if DCOMConnection1.Connected then
      if Failed( ( DCOMConnection1.GetServer as IProgramaciones ).Connect( szUserName, szPassword, pErrorMessage ) ) then
         ShowMessage( 'error' );

Ejemplo con el TSocketConnection
Código Delphi [-]
var
   pErrorMessage : ErrorMessages;
   szUserName    ,
   szPassword    : WideString;
begin
   szUserName    := '';
   szPassword    := '';

   SocketConnection1.Connected := True;
   if SocketConnection1.Connected then
      if Failed( ( SocketConnection1.AppServer as IProgramaciones ).Connect( szUserName, szPassword, pErrorMessage ) ) then
            ShowMessage( 'error' );

Obviamente la aplicación ScktSrvr.exe se está ejecutando en el sitio donde se está ejecutando el servidor de capa intermedia y la aplicación de capa intermedia está registrada también.

Concretando, mi pregunta es ¿Qué puede estar pasando para que me dé ese error solo cuando utilizo el componente TSocketConnection y no con el TDCOMConnection?

¿Puede alguien ayudarme y orientarme un poco referente al tema ?

Agradecería también si alguien tiene algún ejemplo de aplicación en tres capas usando TSocketConnection me lo haga llegar a mi dirección de correo xxx@xxx.com ¡no es válido pedir respuestas por correo!

Os agradezco de antemano el tiempo prestado por ayudarme a encontrar una respuesta para mi problema.

Última edición por jachguate fecha: 21-02-2008 a las 18:14:01. Razón: quitar dirección de correo
Responder Con Cita