Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Providers (https://www.clubdelphi.com/foros/forumdisplay.php?f=10)
-   -   TSocketConnection y error "Interface not supported" (https://www.clubdelphi.com/foros/showthread.php?t=53462)

Aldo 21-02-2008 09:42:11

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.

Paulao 13-03-2008 17:52:29

Mira, el problema estas en su archivo _TLB. Voy a mandar a ud um ejemplo, pero lo hare por el foro, ok? Pero no es posible ahora. Mañana o despues te lo mando.


La franja horaria es GMT +2. Ahora son las 01:57:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi