Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2017
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
Question Ayuda para Convertir Todo este código en Function

Hola, acabo de hacer este test para un traductor con Google.
El programa lo pude hacer funcionar, si bien yo quería usar TIdHTTP, no pude por que en la respuesta no me enviaba el texto traducido, así que tuve que hacerlo con un TWebBrowser,
Ahora necesito la ayuda de alguien que sepa del tema. ya que esto yo lo quiero aplicar a un XML que contiene descripción y esa descripción es la que quiero traducir.
Lo que necesito es que me ayuden a pasar todo esto a una función o procedimiento para poder aplicarlo al texto que yo quiera.
Mi problema es que no sé como asignarle eventos a un componente creado en tiempo de ejecución, por que de saberlo haría un evento y calculo que se podría poner TWebBrowser.OnDocumentComplete := MiEvento.
La verdad es que estuve buscando y no pude encontrar la manera de hacerlo.
Podrían ayudarme, por favor?


Les dejo el link del programa y de paso si les sirve lo usan.

https://mega.nz/#!dJdjQRwQ!ZLWka0f21...zsQOX6uj6m767Y

Gracias!!!
Responder Con Cita
  #2  
Antiguo 01-10-2017
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 22
fredo Va por buen camino
hola, es exactamente como tu dises...

TWebBrowser.OnDocumentComplete := MiEvento.

Debe llevar los parametros exactamente iguales para que quede enganchado...
__________________
^_^

http://stna.cl
Responder Con Cita
  #3  
Antiguo 01-10-2017
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
Al hacerlo me sale error

[DCC Error] GoogleTranslatorTool.pas(65): E2009 Incompatible types: 'method pointer and regular procedure'
Responder Con Cita
  #4  
Antiguo 01-10-2017
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
Logré hacer que me agarre los procedure con cosas que encontré por internet.
El programa corre, pero ahora el problema es que no me pasa por NavegadorDocComplete que es donde tendría que hacer la "magia" el programa.
Les dejo el código de la unit.

Código Delphi [-]
unit GoogleTranslatorTool;

interface
uses
 StdCtrls,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, forms,strutils,IdURI, OleCtrls, SHDocVw,MSHTML;


 // Dummy class to hold event handlers:

    // Event handlers:

Type TWB = class
public
class procedure NavegadorDocComplete(ASender: TObject;const pDisp: IDispatch; var URL: OleVariant);
class procedure NavegadorNavComplete2(ASender: TObject;const pDisp: IDispatch; var URL: OleVariant);
class procedure NavegadorProgChange(ASender: TObject; Progress, ProgressMax: Integer);
//procedure NavegadorNav(const URL : widestring);
end;

procedure ObtenerTraduccion(LangIn,LangOut,SourceText : String; Navegador : TWebBrowser);

Var
  WB : TWB;
  //TMyCustomForm : TForm;
  //Navegador : TWebBrowser;
  el,el1: IHTMLElement;
  inputElement: IHTMLInputElement;
  LangSource,LangTarget,TextoInicial,TextoFinal : String;
  CurDispatch: IDispatch;
  Navegador : TWebBrowser;
CONST URL : string= ('https://translate.google.com.ar/?hl=es#');

implementation
uses gltrans;

class  procedure TWB.NavegadorDocComplete(ASender: TObject;const pDisp: IDispatch; var URL: OleVariant);
begin
application.ProcessMessages;
  if (pDisp = CurDispatch) then
  begin
    CurDispatch := nil; {clear the global variable }
    el1 := (navegador.Document as IHTMLDocument3).getElementById('gt-swap');
    el := (navegador.Document as IHTMLDocument3).getElementById('source');
        //el.onclick;
if (Assigned(el)) AND (Assigned(el1)) then
begin
//if Supports(el, IID_IHTMLInputTextElement, TextElement) then
//el := (navegador.Document as IHTMLDocument3).getElementById('source');

TextoFinal := el.outerText;

end;
  end;
end;
class procedure TWB.NavegadorNavComplete2(ASender: TObject;const pDisp: IDispatch; var URL: OleVariant);
begin
application.ProcessMessages;
   if CurDispatch = nil then
    CurDispatch := pDisp;

end;
class procedure TWB.NavegadorProgChange(ASender: TObject; Progress, ProgressMax: Integer);
begin
application.ProcessMessages;
 if ProgressMax = 0  then
begin
if Assigned(el) then (el1.click);
//memo2.Text := el.outerText;
end;
//Form1.Caption := IntToStr(ProgressMax);

                     {if READYSTATE_COMPLETE = 4 then
begin
el := (navegador.Document as IHTMLDocument3).getElementById('result_box');
if Assigned(el) then
if Supports(el, IID_IHTMLInputElement, inputElement) then
TextoFinal :=  inputElement.value;
end;}
end;

procedure ObtenerTraduccion(LangIn,LangOut,SourceText : String; Navegador : TWebBrowser);
var
WebBrow : TWB;
Begin
WebBrow := TWB.Create;
//Navegador := TWebBrowser.Create(Frmmain);
//navegador.Parent := frmmain;
Navegador.OnDocumentComplete := WebBrow.NavegadorDocComplete;
Navegador.OnNavigateComplete2 := WebBrow.NavegadorNavComplete2;
Navegador.OnProgressChange := WebBrow.NavegadorProgChange;

try
Navegador.Navigate(URL + LangIn + '/' + LangOut + '/' + SourceText);
finally
  if assigned(Navegador) then FreeAndNil(Navegador)

end;
End;




end.
Responder Con Cita
Respuesta



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
Ayuda para dejar mas simple este codigo aguml C++ Builder 6 28-10-2016 00:28:18
ayuda con este codigo kurono Varios 5 02-04-2014 01:25:11
Problema con este function en mysql teecweb MySQL 14 29-03-2013 12:37:39
Convertir este código fuente the CSharp a Delphi Blade_Is_One .NET 0 20-12-2012 15:59:51
ayuda con este codigo kurono Varios 4 13-06-2008 02:03:29


La franja horaria es GMT +2. Ahora son las 01:15:29.


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
Copyright 1996-2007 Club Delphi