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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-04-2020
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
Datos de respuesta de un TidHTTP.Get()

Buenas.
Estoy tratando de hacer un tipo traductor para un proyecto personal de juegos Retro.
Mi idea es cargado algunos datos, obtener el nombre del juego, a que consola pertenece y en base a eso obtener la descripción.
Bueno, en eso estoy casi listo y se me ocurrió hacerlo mas "internacional" como para una vez obtenida la descripción del juego, esta pueda ser traducida a varios idiomas
Se me ocurrió usar google y después de varios intentos y frustraciones, logré con una simple línea de código obtener el resultado que quería. (SÍ 1 SIMPLE LINEA...... UNA!!!!!)

Pero el problema es que la respuesta que obtengo, NO LA ENTIENDO.
Bah! si se entiende, pero no me imagino o no se me estaría ocurriendo como hacer para "armarla" y así poder utilizar el texto traducido.

Les dejo lo que estoy poniendo para traducir y la respuesta que obtengo con el GET

MI TEXTO:

"Combat Chess places two players, or the solitaire game, at the head of an army of tanks and armored cars in a fast moving game that requires a lot of skill and a little luck to win. Each game of Combat Chess will be different because the players choose the rules ! - You select the playing field - consisting of natural or abstract terrain - from a library of ten boards. - You select how much the units can move each turn, and when and how they fire. Destroy your oponent's Battle Cruiser and you win : Each games promises to be a challenging puzzle with the subtle tactics of chess. Because the rules are so simple, more attention has been devoted to making the computer a very intelligent opponent !"


LA RESPUESTA:

[[["Combat Chess coloca a dos jugadores, o el juego de solitario, a la cabeza de un ejército de tanques y carros blindados en un juego de rápido movimiento que requiere mucha habilidad y un poco de suerte para ganar. ","Combat Chess places two players, or the solitaire game, at the head of an army of tanks and armored cars in a fast moving game that requires a lot of skill and a little luck to win.",null,null,3,null,null,null,[[["f16caa8d292961aa55f7ae83b3ec9001","en_es_2019q2.md"]
]
]
]
,["¡Cada juego de Combat Chess será diferente porque los jugadores eligen las reglas! ","Each game of Combat Chess will be different because the players choose the rules !",null,null,3,null,null,null,[[["f16caa8d292961aa55f7ae83b3ec9001","en_es_2019q2.md"]
]
]
]
,["- Selecciona el campo de juego, que consiste en terreno natural o abstracto, de una biblioteca de diez tableros. ","- You select the playing field - consisting of natural or abstract terrain - from a library of ten boards.",null,null,3,null,null,null,[[["f16caa8d292961aa55f7ae83b3ec9001","en_es_2019q2.md"]
]
]
]
,["- Selecciona cuánto pueden mover las unidades en cada turno, y cuándo y cómo disparan. ","- You select how much the units can move each turn, and when and how they fire.",null,null,3,null,null,null,[[["f16caa8d292961aa55f7ae83b3ec9001","en_es_2019q2.md"]
]
]
]
,["Destruye el crucero de batalla de tu oponente y ganarás: cada juego promete ser un rompecabezas desafiante con las sutiles tácticas del ajedrez. ","Destroy your oponent's Battle Cruiser and you win : Each games promises to be a challenging puzzle with the subtle tactics of chess.",null,null,3,null,null,null,[[["f16caa8d292961aa55f7ae83b3ec9001","en_es_2019q2.md"]
]
]
]
,["¡Debido a que las reglas son tan simples, se ha dedicado más atención a hacer de la computadora un oponente muy inteligente!","Because the rules are so simple, more attention has been devoted to making the computer a very intelligent opponent !",null,null,3,null,null,null,[[["f16caa8d292961aa55f7ae83b3ec9001","en_es_2019q2.md"]
]
]
]
]
,null,"en",null,null,[["Combat Chess places two players, or the solitaire game, at the head of an army of tanks and armored cars in a fast moving game that requires a lot of skill and a little luck to win.",null,[["Combat Chess coloca a dos jugadores, o el juego de solitario, a la cabeza de un ejército de tanques y carros blindados en un juego de rápido movimiento que requiere mucha habilidad y un poco de suerte para ganar.",0,true,false]
,["lugares de ajedrez de combate dos jugadores, o el juego de solitario, a la cabeza de un ejército de tanques y vehículos blindados en un juego de movimiento rápido que requiere de mucha habilidad y un poco de suerte para ganar.",0,true,false]
]
,[[0,181]
]
,"Combat Chess places two players, or the solitaire game, at the head of an army of tanks and armored cars in a fast moving game that requires a lot of skill and a little luck to win.",0,0]
,["Each game of Combat Chess will be different because the players choose the rules !",null,[["¡Cada juego de Combat Chess será diferente porque los jugadores eligen las reglas!",0,true,false]
,["Cada juego de ajedrez combate será diferente debido a que los jugadores eligen las reglas!",0,true,false]
]
,[[0,82]
]
,"Each game of Combat Chess will be different because the players choose the rules !",0,0]
,["- You select the playing field - consisting of natural or abstract terrain - from a library of ten boards.",null,[["- Selecciona el campo de juego, que consiste en terreno natural o abstracto, de una biblioteca de diez tableros.",0,true,false]
,["- Se selecciona el campo de juego - que consiste en terreno natural o abstracto - de una biblioteca de tablas de diez.",0,true,false]
]
,[[0,106]
]
,"- You select the playing field - consisting of natural or abstract terrain - from a library of ten boards.",0,0]
,["- You select how much the units can move each turn, and when and how they fire.",null,[["- Selecciona cuánto pueden mover las unidades en cada turno, y cuándo y cómo disparan.",0,true,false]
,["- Se selecciona la cantidad de las unidades pueden mover cada turno, y cuándo y cómo el fuego.",0,true,false]
]
,[[0,79]
]
,"- You select how much the units can move each turn, and when and how they fire.",0,0]
,["Destroy your oponent's Battle Cruiser and you win : Each games promises to be a challenging puzzle with the subtle tactics of chess.",null,[["Destruye el crucero de batalla de tu oponente y ganarás: cada juego promete ser un rompecabezas desafiante con las sutiles tácticas del ajedrez.",0,true,false]
,["Destruir de su oponente crucero de batalla y se gana: cada Juego promete ser un juego de puzzle con las tácticas sutiles de ajedrez.",0,true,false]
]
,[[0,132]
]
,"Destroy your oponent's Battle Cruiser and you win : Each games promises to be a challenging puzzle with the subtle tactics of chess.",0,0]
,["Because the rules are so simple, more attention has been devoted to making the computer a very intelligent opponent !",null,[["¡Debido a que las reglas son tan simples, se ha dedicado más atención a hacer de la computadora un oponente muy inteligente!",0,true,false]
,["Debido a que las reglas son tan simples, más atención se ha dedicado a hacer del equipo un rival muy inteligente!",0,true,false]
]
,[[0,117]
]
,"Because the rules are so simple, more attention has been devoted to making the computer a very intelligent opponent !",0,0]
]
,1.0,[]
,[["en"]
,null,[1.0]
,["en"]
]
,null,null,null,null,null,null,null,null,null,[null,3]
]


A alguien se le ocurre qué es lo que necesito o como puedo hacer para armar ese texto?
Quizás esos números que tira son de algún código como para usarlos y que los acomode o no sé.
La verdad es que intento e intento pero no se me ocurre nada.

Les dejo como solucioné el tema de obtener ese código. Usé FIDDLER para obtener los movimientos WEB y así pude saber a donde enviar el GET para obtener la respuesta.

Memo1.Text := idhttp1.Get(Edit1.Text);


Les agradezco de ante mano!!!!!!
Responder Con Cita
  #2  
Antiguo 09-04-2020
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
Listo!
La solución era más fácil que el problema.
Cargué la respuesta en Notepad++ y ahí me dí cuenta que cada línea de texto estaba acompañada con su traducción y había un texto al final que las otras líneas no tenían.
Con eso se me ocurrió todo.


Esto fue lo que usé.
Se los dejo por si alguna vez lo necesitan.

Función que devuelve un texto entre que está entre dos opciones de texto y es la que uso para separar las lines del texto traducido.

Código Delphi [-]
function TForm1.ExtractTextBetween(const Input, Delim1, Delim2: string): string;
var
  aPos, bPos: Integer;
begin
  Result := '';
  aPos := Pos(Delim1, Input);
  if aPos > 0 then
  begin
    bPos := PosEx(Delim2, Input, aPos + Length(Delim1));
    if bPos > 0 then
    begin
      Result := Copy(Input, aPos + Length(Delim1),
        bPos - (aPos + Length(Delim1)));
    end;
  end;
end;


Edit1.Text contiene la URL que uso para traducir el texto.

Código:
https://translate.google.com.ar/translate_a/single?client=webapp&sl=auto&tl=es&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=gt&pc=1&otf=1&ssel=0&tsel=3&kc=1&tk=893352.727247&q=Guru%20Guru%20sur%20DS%20est%20un%20jeu%20plut%C3%B4t%20orginal%20puisqu%27il%20propose%20une%20sorte%20de%20mini-golf%20o%C3%B9%20la%20balle%20se%20voit%20remplac%C3%A9e%20par%20une%20petite%20cr%C3%A9ature.%20Il%20s%27agit%20alors%20non%20pas%20seulement%20de%20viser%20juste%20mais%20aussi%20d%27utiliser%20les%20capacit%C3%A9s%20magiques%20de%20votre%20bestiole%20pour%20l%27orienter%20vers%20le%20trou.


Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
s : TStringList;
i : integer;
begin
s := TStringList.Create;
s.Text :=  idhttp1.Get(Edit1.Text);
for I := 0 to s.Count - 1 do
  begin
    if AnsiContainsText(s[i],'.md') then
    begin
      Memo2.Lines.Add(ExtractTextBetween(s[i],'["','","'));
    end;
  end;
s.Free;
//Memo2.Text := IdHTTP1.Get('https://translate.google.com.ar/');
//FillLanguage(Memo2.Text , ComboBox1);
end;

Saludos!!!!!
Responder Con Cita
  #3  
Antiguo 09-04-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Responder Con Cita
  #4  
Antiguo 09-04-2020
MaxiDucoli MaxiDucoli is offline
Miembro
 
Registrado: feb 2006
Posts: 134
Poder: 19
MaxiDucoli Va por buen camino
Y olviden todo lo que les dije, por que todas las prubas que hice fueron siempre con la misma linea de texto, la cual lleva una opcion que se llama TK y calculo yo que será un TOKEN y al sacarla no funciona y al cambiar el texto para traducir otra cosa NO FUNCIONA y me da error 403 FORBIDEN....

Seguiré intentando hasta lograrlo de alguna manera y volveré con mi código fuente del triunfo para compartilo con ustedes...
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
Enviar datos a un formulario web y obtener respuesta IVAND Internet 11 24-10-2013 20:22:40
Ayuda con TidHTTP JuanOrtega Internet 5 05-09-2011 23:59:32
TidHttp con acentos keys Internet 3 29-07-2011 18:17:59
Respuesta del Socket demasiado rapida y pierdo datos del mensaje R_Richards Internet 1 04-05-2005 02:15:43
Tiempo de respuesta en Volumen de datos saulpm007 Firebird e Interbase 0 13-10-2004 02:19:10


La franja horaria es GMT +2. Ahora son las 21:47:34.


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