Récupération Adresse IP du PC: Erreur Classe non enreistrée [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
20 mars 2007
-
chrisp2005
Messages postés
5
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
20 mars 2007
-
Help me!
J'utilise Delphi 3!
Je n'ai trouvé qu'un moyen de récupérer l'adresse IP du PC qu'utilise le logiciel que j'ai développé en Delphi 3 (je n'ai rien trouvé dans l'API Windows):
Composant: TTCP = > propriété: LocalIP

Hors celui-ci implique l'Active X WinSck.ocx (et certaines DLL dont la Winsock.dll).

J'ai placé les DLL et l'OCX dans Windows\System32 (ou system pour Windows 9x) et j'ai enregistré l'activeX dans les machines en utilisant "RegSvr32 C:\windows\system32\MSWinSck.Ocx" => pas d'erreur (bien enregistré) puis j'ai rebooté les PC

Au chargement de la Form utilisant le composant TTCP (OleCtrls.dcu et isp3.dcu), il y a l'erreur: "Tolesyserror : Classe non enregistrée".
Pourtant sur ma machine, aucune erreur (évidemment j'ai Delphi3)

Questions: 1) Aurais-je oublié de "charger" quelque chose (DLL ou autre OCX) sur la machine ?
2) Y aurait-il une fonction de l'API ou autre, pouvant être utilisé dans Delphi 3, pour obtenir l'IP du PC sans utiliser ce composant TTCP ?

Merci d'avance !
ChrisP

4 réponses

Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012

En Delphi 3 tu dis !! c ici chrisp2005 :
http://delphi.developpez.com/faq/?page=reseau#adresseip

N.B. Les fonctions WSAStartup, GetHostName sont dans l'unité WinSock à rajouter dans le uses.

Cordialement.
Messages postés
5
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
20 mars 2007

Je te remercie et ça marche impeccable !

Merci et bon courage !
ChrisP
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
4
Hello,



Tiens je ne sais pas si ca fonctionnera sous delphi 3 mais voici la fonction que j utilise pour recuperer l adresse IP du pc :

{------------------------------------------------------------------------------}

{
Permet de récupérer l'adresse IP du
pc
}

{------------------------------------------------------------------------------}

Function CheckIP : ShortString;



Type

TaPInAddr = array [0..10] of PInAddr;

PaPInAddr = ^TaPInAddr;



var

//HWSADataErr,HIPAddress : PChar;

HHostEnt : PHostEnt;

//HPaPinAddr : PaPInAddr;

HName : array [0..255] of char;

I : Integer;

HWSAData : TWSADATA;

SIPAddress : ShortString;



begin



If WSAStartup($0101, HWSAData) <> 0 then

begin



case WSAGetLastError of

WSASYSNOTREADY :

Result := ('Indicates that the underlying network '+


'subsystem is not ready for network communication.');

WSAVERNOTSUPPORTED :

Result := ('The version of Windows Sockets support '+


'requested is not provided by this particular '+

'Windows Sockets implementation.');

WSAEINPROGRESS :

Result := ('A blocking Windows Sockets 1.1 operation is in progress.');

WSAEPROCLIM :

Result :=('Limit on the number of tasks supported by '+


'the Windows Sockets implementation has been reached.');

WSAEFAULT :

Result := ('The lpWSAData is not a valid pointer.');

end;

end

else

begin



If GetHostName(@HName, SizeOf(HName)) = 0 then

begin

HHostEnt :=GetHostByName(@HName);



If HHostEnt <> nil then

begin

{IP Internet}

{HPaPinAddr := PaPInAddr(HHostEnt^.h_addr_list);

I := 0;



while HPaPinAddr^[I] <> nil do

begin

SIPAddress:=StrPas(inet_ntoa(HPaPinAddr^[I]^));

Inc(I);

end;



StrLcopy(HipAddress,@SIPAddress[1],length(SIPAddress));

Result := SIPAddress;//String(HipAddress);}



{IP PC Local}

SIPAddress:='';



for i:=0 to HHostEnt^.h_length - 1 do


SIPAddress:=SIPAddress + IntToStr(ord(HHostEnt^.h_addr_list^[i])) + '.';



Result := SIPAddress;

end

else

begin



case WSAGetLastError of

WSANOTINITIALISED :


Result := ('A successful WSAStartup must occur before '+


'using this function.');

WSAENETDOWN :


Result := ('The network subsystem has failed.');

WSAHOST_NOT_FOUND :


Result := ('Authoritative Answer Host not found.');

WSATRY_AGAIN :


Result := ('Non-Authoritative Host not found, or server failure.');

WSANO_RECOVERY :


Result := ('Nonrecoverable error occurred.');

WSANO_DATA :


Result := ('Valid name, no data record of requested type.');

WSAEINPROGRESS :


Result := ('A blocking Windows Sockets 1.1 call is in '+


'progress, or the service provider is still '+


'processing a callback function.');

WSAEFAULT :


Result := ('The name argument is not a valid part of '+


'the user address space.');

WSAEINTR :


Result := ('The (blocking) call was canceled through
WSACancelBlockingCall.');

end;

end;

end

else

begin



case WSAGetLastError of

WSAEFAULT :

Result := ('The name argument is not a valid part of the '+


'user address space, or the buffer size specified '+


'by namelen argument is too small to hold the '+


'complete host name.');

WSANOTINITIALISED :

Result := ('A successful WSAStartup must occur before '+


'using this function.');

WSAENETDOWN :

Result := ('The network subsystem has failed.');

WSAEINPROGRESS :

Result := ('A blocking Windows Sockets 1.1 call is '+


'in progress, or the service provider is '+


'still processing a callback function.');

end;

end;



WSACleanup;

end;

end;


Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
5
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
20 mars 2007

Merci JMP mais malheureusement impossible de compiler tous les types:
PInAddr
PHostEnt
TWSADATA... en Delphi 3
et aussi les fonctions: WSAStartup, GetHostName

Mais encore Merci et bon courage !
ChrisP2005