Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   GeoIP nur Error (https://www.delphipraxis.net/153039-geoip-nur-error.html)

SyntaxXx 18. Jul 2010 21:13

GeoIP nur Error
 
Hi zusammen, und zwar möchte ich in meinem Progamm das Land einer IP anzeigen lassen.
Sprich ich gebe in meinem Programm eine IP an und über GeoIP möchte ich mir das Land ausgeben lassen.

Da ich im mom leider nicht so viel geld hab habe ich die Free Version genommen.

Doch leider bekomme ich immer nur "Error" ausgegeben.

Folgende Funcion habe ich benutzt:

Delphi-Quellcode:
function TForm1.LookupCountry(IP : String): string;
var
   GeoIP: TGeoIP;
   GeoIPCountry: TGeoIPCountry;
begin
  GeoIP := TGeoIP.Create('GeoIP.dat');
  try
    if GeoIP.GetCountry(IP, GeoIPCountry) = GEOIP_SUCCESS then
    begin
      Result := GeoIPCountry.CountryName;
    end
    else
    begin
      Result := 'Error';
    end;
  finally
    GeoIP.Free;
  end;
end;
Daraus schließe ich jetzt einfach mal, das die Datenbank von GeoIP, welche ich mir geladen hab die IP Range nicht kennt, also nicht weiß, aus welchem Land die IP kommt.

Könnt ihr mir vielleicht weiter helfen?

Habe es mit meiner IP versucht, welche ja eigendlich in jeder IP Range drin stehen müsste.

Luckie 18. Jul 2010 21:37

AW: GeoIP nur Error
 
Wird im Konstruktor
Delphi-Quellcode:
GeoIP := TGeoIP.Create('GeoIP.dat');
der Pfad zur Datenbankdatei angegeben? Wenn ja, wo soll er deiner Meinung nach die Datei finden?

SyntaxXx 18. Jul 2010 21:43

AW: GeoIP nur Error
 
Ja so denke ich mir das. Die funktion stammt von GeoIP selbst.
Stand unter "Samples".

Er würde ja demnach die Datei da suchen, wo auch die kompilierte .exe von meinem Programm liegt.

rollstuhlfahrer 18. Jul 2010 21:46

AW: GeoIP nur Error
 
und liegt da auch die Datenbankdatei?

Bernhard

EDIT: Benutze doch mal deine eigene öffentliche IP, da müsste was kommen oder schau die IP von Google nach. Da sollte auch was kommen.

Luckie 18. Jul 2010 21:47

AW: GeoIP nur Error
 
Zitat:

Zitat von SyntaxXx (Beitrag 1036052)
Er würde ja demnach die Datei da suchen, wo auch die kompilierte .exe von meinem Programm liegt.

Nö. Er sucht sie im aktuellem Arbeitsverzeichnis.Das kann das Programmverzeichnis sein, muss aber nicht.

Siehe auch hier: http://www.michael-puff.de/Artikel/G...irectory.shtml

rollstuhlfahrer 18. Jul 2010 21:53

AW: GeoIP nur Error
 
oder mal mit FileExists prüffen, ob die Datei existiert.

Bernhard

SyntaxXx 18. Jul 2010 22:01

AW: GeoIP nur Error
 
Also habs jetzt so gemacht wie ihr gesagt habt.
Also der Pfad stimmt, denn wenn ich die Datei umbenenne bekomme ich einen Fehler, das die Datei nicht gefunden wurde.

Habs mal mit meiner IP probiert, bekomme aber immer "Error" ausgegeben.

Klaus01 19. Jul 2010 07:54

AW: GeoIP nur Error
 
Guten Morgen,

wie wäre es, wenn Du einmal den Rückgabewert von GetCountry auswertest?
Delphi-Quellcode:
function TForm1.LookupCountry(IP : String): string;
var
   GeoIP: TGeoIP;
   GeoIPCountry: TGeoIPCountry;
begin
  GeoIP := TGeoIP.Create('GeoIP.dat');
  try
    returnCode := GeoIP.GetCountry(IP, GeoIPCountry);
    if returnCode = GEOIP_SUCCESS then
    begin
      Result := GeoIPCountry.CountryName;
    end
    else
    begin
      Result := 'Error ' + IntToStr(returnCode);
    end;
  finally
    GeoIP.Free;
  end;
end;
Von welchem Typ returnCode sein muss can ich Dir nicht sagen
sollte aber in der Doku zu finden sein.
Ich nehme an es ist Byte oder Integer.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz