Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-04-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Anoche me encontraba leyendo la documentacion de los RFC del XMPP para poder implementar las funciones que estoy haciendo para manipular los XML que envio y recibo del servidor XMPP. Dado que las voy a poner dentro de una DLL para que otros usuarios la utilizen desde cualquier lenguaje de programacion me surge una duda. ¿Como podria declarar yo una funcion dentro de la DLL para que no tenga problemas al usarlo con algun otro lenguaje de programacion?. O sea con que tipo de datos declaro los parametros?. Estuve pensando en declarar los parametros como PChar para la compatibilidad y que todas las funciones sean con stdcall al final.

Diganme que creen de esto. Por ejemplo como seria la forma correcta de declarar esta funcion en una DLL para poder utilizarla en otros lenguajes??

Código Delphi [-]
function xmpp_login(pUserName, pPassword, pResource: String): WideString;
var
  cXMLDoc: TXMLDocument;
begin

  cXMLDoc := TXMLDocument.Create(Form1);
  try
    cXMLDoc.XML.Text := xmpp_res_login;
    cXMLDoc.Active := True;
    cXMLDoc.DocumentElement.ChildNodes['query'].ChildNodes['username'].Text := pUserName;
    cXMLDoc.DocumentElement.ChildNodes['query'].ChildNodes['password'].Text := pPassword;
    cXMLDoc.DocumentElement.ChildNodes['query'].ChildNodes['resource'].Text := pResource;
    Result := cXMLDoc.XML.Text;
  finally
    cXMLDoc.Free;
  end;

end;

Esa funcion actualmente con una llamada como esta

Código Delphi [-]
Memo1.Text := xmpp_login('fide_uci', 'myP@sSw0rd', 'nombre_pc');


me devuelve esto.

Código:
<iq type="set" id="auth_id"><query xmlns="jabber:iq:auth"><username>fide_uci</username><password>myP@sSw0rd</password><resource>nombre_pc</resource></query></iq>
Alguien que me diga que cree de esto y como seria la mejor manera de declararla dentro de una DLL para que no tenga problema alguno de compatibilidad.
Responder Con Cita
  #2  
Antiguo 02-04-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Amigos ya he implementado las funciones con todos los parametros en PChar y con la llamada stdcall pero ahora me sale un error que es EDivByZero que no tiene nada que ver con lo que estoy haciendo.

Creo que el error se debe a que cuando creo el componente para leer y establecer los XML el parent se lo estoy poniendoa nil.

Código Delphi [-]
cXMLDoc := TXMLDocument.Create(nil);

Cuando yo lo estaba haciendo directamente en el formulario lo creaba asi.

Código Delphi [-]
cXMLDoc := TXMLDocument.Create(Form1);

Pero como en la DLL no tengo ningun componente para darle de parent parece que me esta dando ese error.

¿Alguien sabe como podria solucionar eso?

O sea como puedo crear un componente dentro de una Dll si no tengo un parent para darle ?
Responder Con Cita
  #3  
Antiguo 02-04-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Asi es como me va quedando la DLL. Por favor que alguien me la revise a ver que error le encuentra.

Código Delphi [-]
library XMPPCore;

{********************************************************************************
*  XMPPCore.dll es la dll que contiene todas las funciones para la manipulacion *
*  de todos los stream XML que se envian y reciben con el cliente y el servidor.*
*********************************************************************************}

uses
  SysUtils, Classes, xmldom, XMLIntf, msxmldom, XMLDoc, XMPP_Res;

{$R *.res}

function xmpp_initialization(pTo: PChar): PChar; stdcall;
begin
    xmpp_res_Initialization;
    Result := PChar(Format(xmpp_res_initialization, [pTo]));
end;

function xmpp_login(pUserName, pPassword, pResource: PChar): PChar; stdcall;
var
  cXMLDoc: TXMLDocument;
begin

  cXMLDoc := TXMLDocument.Create(nil);
  try
    cXMLDoc.XML.Text := xmpp_res_login;
    cXMLDoc.Active := True;
    cXMLDoc.DocumentElement.ChildNodes['query'].ChildNodes['username'].Text := pUserName;
    cXMLDoc.DocumentElement.ChildNodes['query'].ChildNodes['password'].Text := pPassword;
    cXMLDoc.DocumentElement.ChildNodes['query'].ChildNodes['resource'].Text := pResource;
    Result := PChar(cXMLDoc.XML.Text);
  finally
    cXMLDoc.Free;
  end;

end;

function xmpp_presence(pType, pMsg, pShow: PChar): PChar; stdcall;
var
  cXMLDoc: TXMLDocument;
  vStrUtils: String;
begin

  cXMLDoc := TXMLDocument.Create(nil);
  try
    cXMLDoc.XML.Text := xmpp_res_presence;
    cXMLDoc.Active := True;
    vStrUtils := pType;
    if pMsg <> '' then
      cXMLDoc.DocumentElement.SetAttributeNS('type', '', vStrUtils)
    else
      cXMLDoc.DocumentElement.SetAttributeNS('type', '', 'avaliable');
    if pMsg <> '' then
      cXMLDoc.DocumentElement.ChildNodes['status'].Text := pMsg;
    if pShow <> '' then
      cXMLDoc.DocumentElement.ChildNodes['show'].Text := pShow;
    Result := PChar(cXMLDoc.XML.Text);
  finally
    cXMLDoc.Free;
  end;

end;

exports
   xmpp_initialization, xmpp_login, xmpp_presence;

begin
end.
Responder Con Cita
  #4  
Antiguo 02-04-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Les digo que el error es con la creacion del componente de XML por que cuando llamo a la funcion

Código Delphi [-]
function xmpp_initialization(pTo: PChar): PChar; stdcall;

La cual no crea ningun componente XML, me devuelve el resultado sin ningun problema.
Pero cuando intento llamar a algunas de las otras entonces me da ese error.

EDivByZero que es la excepcion matematica de cuando se hace una division x 0.
Responder Con Cita
  #5  
Antiguo 02-04-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Estuve pensando en crear un formulario dentro de la DLL y crearlo todo ahi, o sea ponerle a los componentes XML que valla creando el Form1 como parent. Pero no se si esa sea la solucion mas correcta. Alguien me puede guiar ?
Responder Con Cita
  #6  
Antiguo 03-04-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Dado qe nadie me ha respondido voy a ir creando todos los componentes en un form que he metido dentro de la DLL. Creo que esto no afecta la compatibilidad pero bueno por si acaso yo pregunto.
Responder Con Cita
  #7  
Antiguo 06-04-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Hola amigos. Alguien sabe para que se utiliza el componente IdSASLDigest ??
Pk veo que es para utilizarlo con el mecanismo Digest pero no se como hacerlo !
Responder Con Cita
  #8  
Antiguo 06-04-2010
Avatar de fide_uci
fide_uci fide_uci is offline
Miembro
 
Registrado: ene 2009
Ubicación: Cuba - La Habana
Posts: 226
Poder: 18
fide_uci Va por buen camino
Ya voy avanzando en la creacion del clientico de jabber. Luego en cuanto tenga un tiempo les envio un demo de como va quedando para que lo puedan utilizar. Pero deben de darme algo de tiempo dado que aun estoy en la implementacion de las ventanas para el chat y tambien en lo que es el manejo del roster, o sea de la lista de personas que tenemos suscritas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Recompilar programas de TURBO PASCAL en DELPHI amfm Varios 3 30-11-2009 09:40:00
Recompilar vcl.bpl - bug #9344 juanmdq Varios 0 26-06-2008 13:45:45
Recompilar componente yomismo24 C++ Builder 0 02-10-2007 19:00:59
¿cambiar ibx a fbclient.dll? ¿como recompilar? pvizcay Firebird e Interbase 11 10-04-2007 20:07:01
Recompilar de Delphi 3 a Delphi 5 Theophile2286 Varios 2 25-12-2006 12:53:05


La franja horaria es GMT +2. Ahora son las 13:42:59.


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