Hola, aquí os dejo la traducción del código de Pink de su [Enlace externo eliminado para invitados].

Imagen


Básicamente el código es el siguiente:

Mostrar/Ocultar

Descarga proyecto completo + compilado: [Enlace externo eliminado para invitados]
Pass: udtools.net
UDTools.net
GitHub: https://github.com/MetalUDT
Esta guay esa web que usas, por que saca los datos bastante precisos y en xml, y te ha quedado bonita la aplicacion. Pero Metal, ¿Delphi no tiene alguna funcion para leer XML?, al menos yo cuando trabajo con XML en PHP hay una función que le pasas como parametro el xml y te devuelve un objeto para acceder a cada elemento de forma sencilla. Usar split para esto es un auto-despido en una empresa XD

Saludos!, haber si hablamos!
Soy un camaleón, en tu cama, leona ♪
Sí, sí que lo tiene, lo que ocurre es que no lo he trabajado mucho (en mi puta vida xD) así que lo hice de la forma que se me ocurrió así a primera vista y manteniendo en medida de lo posible la esencia del code original (usa _StringBetween).

Saludos!

//Edit, pues es bien sencillito de hacer con TXMLDocument, lo mío es complicarme la vida, está claro.
UDTools.net
GitHub: https://github.com/MetalUDT
Queda mucho más limpio, la verdad, lo único es que pierde la esencia de la traducción:
procedure TForm1.Button1Click(Sender: TObject);
var
  ip: string;
  bandera: string;
  png: tpngobject;
  i: integer;
  Nodo: IXMLNode;
begin
  ip:= edit1.Text;
  XMLDocument1.FileName:= 'http://freegeoip.net/xml/' + IP;
  XMLDocument1.Active:= True;
  Nodo:= XMLDocument1.DocumentElement;

  bandera:= 'http://flagpedia.net/data/flags/small/';
  bandera:= bandera + ansilowercase(Nodo.ChildNodes['CountryCode'].Text) + '.png';
  urldownloadtofile(nil, pchar(bandera), 'flag.png', 0, nil);

  png:= tpngobject.Create;
  png.LoadFromFile('flag.png');
  image1.Picture.Assign(png);

  with listview1.Items do
    begin
      for i:= 0 to count -1 do
        item[i].SubItems.clear;
      Item[0].SubItems.Add(Nodo.ChildNodes['Ip'].Text);
      Item[1].SubItems.Add(Nodo.ChildNodes['CountryCode'].Text);
      Item[2].SubItems.Add(Nodo.ChildNodes['CountryName'].Text);
      Item[3].SubItems.Add(Nodo.ChildNodes['RegionCode'].Text);
      Item[4].SubItems.Add(Nodo.ChildNodes['RegionName'].Text);
      Item[5].SubItems.Add(Nodo.ChildNodes['City'].Text);
      Item[6].SubItems.Add(Nodo.ChildNodes['ZipCode'].Text);
      Item[7].SubItems.Add(Nodo.ChildNodes['Latitude'].Text);
      Item[8].SubItems.Add(Nodo.ChildNodes['Longitude'].Text);
      Item[9].SubItems.Add(Nodo.ChildNodes['MetroCode'].Text);
      Item[10].SubItems.Add(Nodo.ChildNodes['AreaCode'].Text);
    end;
end;
Pero queda de lujo así, gracias Dra!
UDTools.net
GitHub: https://github.com/MetalUDT
Mucho mejor XD. Por eso te decía, se queda mas limpio y profesional. Aunque no sea igual que el code original, las cosas bien hechas... ajajaja. Ademas puede que sea mas optimo usar XMLDocument que winhttprequest. Bueno tampoco se Delphi así que hablo desde la ignorancia XD.

Subelo y te edito el enlace asi lo tenemos compilado tambien!

Saludos!!
Soy un camaleón, en tu cama, leona ♪
Eso está hecho fiera

Código usando XMLDocument:

Mostrar/Ocultar

Descarga proyecto completo + compilado: [Enlace externo eliminado para invitados]
Misma pass.

Saludos!
UDTools.net
GitHub: https://github.com/MetalUDT
Responder

Volver a “Fuentes”