Hi Leute.
Ich schreibe zwar wernig in Forum dafür lesen tue ich sehr viel.Vor enigen Zeit bin ich von VB zu Delphi gewandert.
Gelernt habe ich es bis jetzt nur autodidakt, das wird sich wohl auch nicht mehr ändern. Für die Schule bin ich mit 43 wohl etwas zu alt.
Nun zu meinem Problem. Ich habe mehr oder wenig erfolgreich mehrere Tools schon geschrieben. Alles mit Delphi 2007.
Nun habe ich testweise Delphi 2009 installiert. Soweit gefällt mir 2009 viel bessser. Paar Funktionen sind verbessert,leider aber paar Sachen auch geändert.
Ich habe schon immer Probleme mit Typen gehabt. Irgendwie habe ich es aber immer wieder auf die Reihe bekommen.
In einigen Tools benutze ich diese IP Abfrage.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| procedure TRequestPublicIP.Execute; const DetectorService: array[0..2] of String = ( 'http://www.whatismyip.com', 'http://www.wieistmeineip.de', 'http://www.heise.de/netze/tools/ip/' ); var RE: TRegExpr; IdHTTP: TIdHTTP; i: Integer; IP: in_addr; begin FSuccess := FALSE; FResult := 'Unknown error'; RE := TRegExpr.Create; IdHttp := TIdHTTP.Create(NIL); try RE.Expression := '(\d{1,3}\.){3}\d{1,3}'; i := 0; while ( (NOT FSuccess) and (i <= High(DetectorService)) ) do begin try FSuccess := RE.Exec(IdHTTP.Get(DetectorService[i])); if FSuccess then begin FResult := RE.Match[0]; IP.S_addr := inet_addr(PChar(FResult)); FSuccess := (IP.S_addr <> INADDR_ANY); if FSuccess then FResult := inet_ntoa(IP) else FResult := 'Invalid address: '+RE.Match[0]; end else FResult := 'IP address not found'; except FResult := Exception(ExceptObject).Message; end; Inc(i); end; finally IdHTTP.Free; RE.Free; end; end; |
Unter Delphi 2009 bekomme immer diese Fehlermeldung:
Zeile 28 --> IP.S_addr := inet_addr(PChar(FResult)); // in IPv4 (bin) wandeln
[DCC Fehler] ReqPubIP.pas(57): E2010 Inkompatible Typen: 'Char' und 'AnsiChar'
Zeile32 --> else
[DCC Warnung] ReqPubIP.pas(61): W1057 Implizite String-Umwandlung von 'AnsiChar' zu 'string'
Leider schnalle ich es nicht ganz wie es geändert werden muss.
Kann mir Jemand es verbessern, aber mit Erklärung wenns geht, so daß ich mir später die Sachen selbst korrigieren kann.
Für jede Hilfe bin ich dankbar.
Zusatz:
Bitte nicht danke ich würde nur fertige Sachen benutzen ohne Sinn und Verstand. Das stimmt nämlich nicht.
Ich schreibe was ich kann selbst, wenn snicht klappt sucvhe eine Vorlage, versuche die zu verstehen, schreibe es um oder nutze nur Teile davon wie auch immer. Schulwissen fehlt mir, doch einiges klappt ganz gut.
Einige Proceduren muß man auch nicht selbst erfinden, was schon erfunden wurde. Wir benutzen auch Alle Räder beim fahren. Erfunden haber wir das Rad aber auch nicht. Oder ?
Moderiert von
AXMD: Code- durch Delphi-Tags ersetzt