Bonjour,
Pour résumer, la source http://www.delphifr.com/codes/ADRESSE-IP-DERRIERE-ROUTEUR-ENVOIE-FTP-AVEC-WININET_33323.aspx permettait de récupérer son ip à partir d'un petit fichier php sur un serveur (<?php echo $_SERVER['REMOTE_ADDR']; ?>). J'ai isolé la fonction donneIP et m'en suis resservi dans un programme.
Code Delphi :
function DonneIp: string;
var
hSession: HINTERNET;
hService: HINTERNET;
RcvBuffer: array[0..255] of Char;
dwSize, Reserved: DWORD;
sAppName: string;
sUrl : string;
begin
sUrl := 'http://www.monsite.fr/Identification_IP/Send_ip.php';
sAppName := ExtractFileName(Application.ExeName);
hSession := InternetOpen(PChar(sAppName), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
try
hService := InternetOpenUrl( hSession, PChar(sUrl), nil, 0, 0, 0);
RcvBuffer := '';
dwSize := sizeof(RcvBuffer);
Reserved := 0;
InternetReadFile(hService, @RcvBuffer, 1024, dwSize);
Result:= String(RcvBuffer);
finally
InternetCloseHandle(hService);
InternetCloseHandle(hSession)
end;
end;
Tout allait très bien sous delphi 5...
J'essaie cette fonction sous XE2 et catastrophe, voici à quoi ressemble mon ip : '㤸㠮'#$2E33'㜱'#$2E39'㘱9' (qui doit normalement être '89.83.179.169', en tous cas, sous D5)
Sous D5, j'ai RcvBuffer = ('8', '9', '.', '8', '3', '.', '1', '7', '9', '.', '1', '6', '9', #0, #0, #0, ...
Sous XE2, j'ai RcvBuffer = ('㤸', '㠮', #$2E33, '㜱', #$2E39, '㘱', '9', #0, #0, #0, ...
Vu que ça fonctionne sous D5, je suis tenté de me dire que le problème vient d'XE2.
Quelque chose a dû m'échapper, mais quoi...
Je sollicite votre aide pour la résolution de ce problème qui commence à me prendre la tête, merci d'avance pour vos réponses.
Simon