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 17-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Entonces, antes de plantearte lo grande, comienza con lo básico. Es decir, antes de liarte con el protocolo XMPP revisa cómo mandas datos (ya sea con GET o con POST) y cómo recibes la respuesta. Aquí en los foros puedes encontrar muchas referencias (busca Indy, IdHttp, etc. o bien WinInet). Una vez que tengas eso resuelto, posiblemente te convenga seguir con XMLDocument, para poder extraer la información del xml que recibas o incluso para armar el xml que mandes.

El punto, en mi opinión, es que es un poco descabellado lanzarte a un proyecto complejo sin recorrer el camino paso a pasito.

// Saludos
Responder Con Cita
  #2  
Antiguo 17-03-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
Exactamente eso es lo que tengo pensado ggg.
Entonses solo queda ponerme en marcha a analizar como enviar y recibir esos datos desde un componente de la Indy. Muchisimas gracias desde ya !
Responder Con Cita
  #3  
Antiguo 01-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
Weno ya que he avanzado tanto, tengo que darles noticia.
Ya logré enviar cosas al servidor, recibir cosas del servidor XMPP y actualmente me encuentro diseñando las funciones para escribir y leer los datos en los XML que intercambio con el servidor.
Estoy pensando en hacer una dll con todas las funciones de manipulacion del XML para que otros usuarios la puedan usar y ademas no solo con delphi sino con cualquier lenguaje.
Cuando tenga algo convincente lo pongo aqui para que lo revisen y me digan que tal.

Última edición por fide_uci fecha: 02-04-2010 a las 21:41:48.
Responder Con Cita
  #4  
Antiguo 01-04-2010
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.702
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Estupendo!
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
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
  #6  
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
  #7  
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
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 02:32:41.


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