Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Recompilar Exodus (https://www.clubdelphi.com/foros/showthread.php?t=66826)

fide_uci 14-03-2010 03:29:02

Recompilar Exodus
 
Hola amigos. Tengo un tremendo problema y en verdad necesito que me ayuden.

Como parte de mis estudios me han dado la tarea de crear un cliente de mensajeria basado en XMPP (jabber) con delphi. La Opcion mas asequible que vi fue cojer el cliente Exodus y hacerle algunos cambios y agregarle algunas cosas. Lo que necesito es descargar los fuentes del googlecode. Pero como estoy en Cuba no lo puedo hacer por que esta denegado. Necesito por favor amigos que alguien me ayude para poder terminar con mi tarea, que alguien me los baje del googlecode y me los ponga en un .zip o algo en otra pagina para despues poder obtenerlos.

No saben cuanto se los voy a agradecer si alguien me pudiera ayudar plaseee.
Aqui la direccion: http://exodus.googlecode.com/svn/trunk/
Espero que alguien me ayude o estoy en problemas.

fide_uci 14-03-2010 06:27:37

Amigos nadie me puede ayudar?

JXJ 14-03-2010 16:35:32

a donde si puedes acceder desde cuba?

agun servidor tipor rapidshare, megaupload¡¡??

Casimiro Noteví 14-03-2010 19:11:29

Hay bastantes cosas en ese enlace que has puesto, ¿necesitas todo?

fide_uci 14-03-2010 19:47:43

Amigo Casimiro y demas que me estan ayudando primero que todo muchas gracias. Pues si que lo necesito todo, por que para compilarlo tengo que tenerlo todo no valla a ser que si falta algo yo no pueda compilar.

Me puedes ayduar amigo ?
Bajarlo a tu PC, compimirlo en ZIp y ponermelo en algun lado?

Casimiro Noteví 14-03-2010 19:51:34

ok... te aviso en cuanto esté

fide_uci 14-03-2010 19:56:29

jajaja muchas graciasssssssssssssssssssssssss.
Que dios te vendiga con mucho dinero, salud y muchas licencias Free de Delphi en sus ultimas versiones. Asi como otros productos tanto Propietarios como de Codigo Abierto.

fide_uci 14-03-2010 20:09:23

me avisas en cuanto lo tengas todo preparado. No sabes como te lo voy a agradecer Casimiro. Cuando tenga la nueva version del Cliente que tengo que hacer con Soporte para juegos, vIP y todo lo demas lo voy a poner aqui para que todos tengan acceso a los fuentes.

Casimiro Noteví 14-03-2010 21:15:39

Sigue descargando... 500 Mb ... espero que comprimido ocupe bastante menos

fide_uci 14-03-2010 21:17:38

Uff pero que clase tamañazo tiene eso. Por dios.
Ale en cuanto termines me avisas men de donde lo puedo bajar.

Casimiro Noteví 15-03-2010 01:04:38

Bueno, ya lo he descargado, 1,1 Gb que comprimidos se han quedado en 330 Mb.
Aquí tienes el enlace, espero que puedas descargarlo de ese sitio y no lo tengas censurado también.

fide_uci 15-03-2010 01:31:29

Jajaja Muchas gracias amigo mio. No sabes cuanto te lo voy a agradecer.
Deja intentar bajarlo entonces mi friend.

Luego te digo cuando lo termine de bajar.

BrunoBsso 15-03-2010 01:57:09

¡Casimiro Notevi, qué trabajito te mandaste!
Una cosa es aportar una solución a un problema con un lenguaje de programación.
Pero otra completamente más laboriosa es bajar 1.1 GB, comprimirlo y resubirlo por el simple hecho de ayudar.
¡FELICIDADES!

fide_uci 15-03-2010 04:14:18

Yo digo que con personas asi La Humanidad estuviera salvada.

Casimiro Noteví 15-03-2010 10:44:57

casimiro for president! :D

Que va... hombre, si ha sido fácil :)

fide_uci 15-03-2010 23:15:38

Weno ya he logrado obtener todos los fuentes y lo que no es fuente tambien ggg.
Ahora lo que necesito es compilarlo. Oye Casimiro mira a ver si tu lograr compilarlo pero no con el Delphi 2006, sino con el Delphi 7. Creo que si se puede compilar lo que a mi me da errores pequeños pero no me lo compila. Prueba tu a ver que tienes mas experiencia. O si algun amigo lo ha logrado compilar para delphi 7 que me avise pleaseeeee.

fide_uci 15-03-2010 23:20:17

Buscando en google veo que algunas personas lo han logrado compilar. Pero la verdad no se como por que a mi eso me da mas errores que no se ni que.
Si alguien me ayudara estaria muy agradecido.

fide_uci 16-03-2010 00:35:41

Por dios. Esa cosa no se me quiere compilar con delphi 7. Alguien sabe de alguna lubreria en la cual pueda hacer un cliente de jabber desde 0?

Casimiro Noteví 16-03-2010 00:41:29

¿Y por qué no nos comentas qué errores son esos que te salen?

fide_uci 16-03-2010 00:45:24

Dejame enviarte los errores a ver.

fide_uci 16-03-2010 00:49:11

El primerito que me da es teste.

"Ancestor for TExForm not found."

Casimiro Noteví 16-03-2010 00:50:26

Por si acaso quieres probar otro más sencillo, aquí tienes este más pequeñito :).

Olvídalo... no viene el código fuente...

Casimiro Noteví 16-03-2010 01:19:17

He encontrado varios, pero son para Linux.

fide_uci 16-03-2010 02:27:31

uff entonces estoy jod ??
Intenta compilarlo tu a ver, el Exodus.

fide_uci 16-03-2010 02:30:13

O sino habla con neftali o Roman para que me ayuden con eso que es de vida o muerte.

Casimiro Noteví 16-03-2010 11:33:58

Siento no poder ayudarte en eso :(

Intenta compilar y cuando encuentres el primer error lo comentas aquí, por si acaso podemos ayudar alguno. Y así paso a paso.

fide_uci 16-03-2010 18:23:59

Okok deja ver. Es que cuando intento compilarlo me dice el error ese de que no encuentra la clase base ExForm. Para mi que eso es problema con los componentes Exodus. O sea el paquete ese que se distribuye con el programa para su compilacion. Dejame buscar mas informacion y luego te cuento.

fide_uci 16-03-2010 20:37:54

Necesito saber si alguien tiene el conocimiento para desarrollar un cliente jabber con las funcionalidades basicas desde 0. Por favor alguien me pudiera ayudar?

Usando delphi 7 claro esta !

Casimiro Noteví 16-03-2010 21:00:12

Cita:

Empezado por fide_uci (Mensaje 357166)
Necesito saber si alguien tiene el conocimiento para desarrollar un cliente jabber con las funcionalidades basicas desde 0. Por favor alguien me pudiera ayudar?
Usando delphi 7 claro esta !

Amigo fide_uci, el problema no es simplemente si se tiene el conocimiento, el problema es el tiempo y recursos necesarios para llevarlo a cabo, estudio, documentación, análisis, etc...
Lo más "simple" es hacer lo que estás haciendo tú, coger un código fuente de otro que sea libre y ahora debes analizarlo, estudiarlo, eliminar lo que no te interese, etc. y así poco a poco hasta dejarlo con lo mínimo que necesitas.
Eso o tratar de resolver los errores que te salen al compilar.

También puede que en algún paquete de componentes encuentres uno que implemente jabber, no sé si la JVCL, la Indy, etc.

roman 16-03-2010 21:59:47

Hola,

Yo realmente no sé nada de Exodus o Jabber. Es más, ni siquiera de mensajería instantánea porque no la uso.

Sin embargo, creo que también se podría optar por hacer lo inverso. Es decir, en lugar de partir de un cliente hecho, ¿por qué no partir de cero aun cuando no se pretenda implementar todas las funciones?

Es decir, dado que esto es para una tarea de Facultad o algo similar; creo que es válido plantearse la implementación de un cliente sencillo que ejecute funciones básicas. Y en ese sentido puede ser algo asequible sin tener que enredarse en el código fuente de un cliente completo y maduro.

Este documento, parece describir de buena manera el protocolo XMPP en el que se basa Jabber. Y dado que este protocolo está basado (o eso creo) en XML, es algo relativamente sencillo de manejar con Delphi.

El documento (parece que es la tesis de alguien) comienza mostrando, de manera muy clara, lo básico para registro, autenticación y envío de un mensaje. Todo el documento consta de sesenta páginas, así que es digerible, sobre todo porque no parece ser la especificación IETF -que nadie entiende :D- sino algo mucho más claro.

En fin, yo consideraría darle una revisada y ver si se puede partir de cero con miras a hacer algo sencillo.

// Saludos

fide_uci 17-03-2010 14:36:22

Amigos yo los entiendo. Pero el problema es que yo conozco muchisimas cosas sobre el protocolo y tambien sobre la Indy. Pero cuando intento enviar cosas al servidor las envio sin problemas, pero lo que no logro es recibir nada de el.

aqui algo de codigo
Código Delphi [-]
  TCPClient.Host := 'jabber.uci.cu';
  TCPClient.Port := 5223;
  TCPClient.Connect;
  ClientHandleThread := TClientHandleThread.Create(True);
  ClientHandleThread.FreeOnTerminate := True;
  ClientHandleThread.Resume;
Eso en el Boton conectar.
Lo que tengo dudas es aqui. Es decir como le debo enviar los comandos al servidor y como recibirlos.
Código Delphi [-]
TCPClient.WriteStrings(Memo2.Lines);

fide_uci 17-03-2010 14:37:24

Asi seria como deberia enviar cosas, o por ejemplo con algun otro metodo?
Como hago para recibir lo que el me envia para atras?

roman 17-03-2010 14:49:57

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

fide_uci 17-03-2010 23:45:44

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 !

fide_uci 01-04-2010 07:23:53

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.

Casimiro Noteví 01-04-2010 11:41:13

Estupendo! :)

fide_uci 02-04-2010 20:06:40

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.

fide_uci 02-04-2010 21:34:35

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 ?

fide_uci 02-04-2010 21:38:26

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.

fide_uci 02-04-2010 21:40:53

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.


La franja horaria es GMT +2. Ahora son las 14:33:28.

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