FAQ DelphiConsultez toutes les FAQ

Nombre d'auteurs : 123, nombre de questions : 919, dernière mise à jour : 14 juin 2019  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums Delphi et Delphi et bases de données de www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose soient correctes. Les auteurs font le maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous souhaitez y apporter des corrections ou la compléter, contactez un responsable (lien au bas de cette page).

Nous espérons que cette FAQ saura répondre à vos attentes. Nous vous en souhaitons une bonne lecture.

L'équipe Delphi de Developpez.com.

Commentez


SommaireSystèmeRéseau (13)
précédent sommaire suivant
 

La fonction ci-dessous permet d'obtenir le nom de l'ordinateur à partir de la fonction API GetComputerName. Ce nom est celui de l'ordinateur visible sur un réseau local.

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
function ComputerName: string; 
var 
  lpBuffer: array[0..MAX_COMPUTERNAME_LENGTH] of char; 
  nSize: dword; 
begin 
  nSize:= Length(lpBuffer); 
  if GetComputerName(lpBuffer, nSize) then 
    result:= lpBuffer 
  else 
    result:= ''; 
end;

Mis à jour le 18 octobre 2013 nut62

L'adresse IP (pour Internet Protocol) est l'adresse de l'ordinateur sur un réseau IP. Il est utile de la connaître pour réaliser des échanges directs sur Internet via des composants TClientSocket/TServerSocket ou Indy.

Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
Uses Sockets; 
  
function getIP:string; 
Begin 
  With TCustomIpClient.Create(Nil) do 
  Begin 
    Result:=LocalHostAddr; 
    Free; 
  End; 
End;
Ce code ne fonctionne que pour Delphi 6 et supérieur. Pour la version 5 et précédentes, utilisez l'un des deux codes suivants.

Ce premier code permet d'obtenir l'adresse du réseau local :
Code delphi : Sélectionner tout
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
uses winsock;  
  
function LocalIP : String;  
type  
  TArrayPInAddr = array [0..10] of PInAddr;  
  PArrayPInAddr = ^TArrayPInAddr;  
var  
  phe      : PHostEnt;  
  pptr     : PArrayPInAddr;  
  Buffer   : array [0..63] of char;  
  i        : integer;  
  GInitData: TWSADATA;  
begin  
  WSAStartup($101, GInitData);  
  result := '';  
  GetHostName(Buffer, sizeof(Buffer));  
  phe := GetHostByName(Buffer);  
  if phe=nil  
    then exit;  
  pptr := PArrayPInAddr(phe^.h_addr_list);  
  i := 0;  
  while pptr^[i]<>nil do  
  begin  
    result := StrPas(inet_ntoa(pptr^[i]^));  
    Inc(i);  
  end;  
  WSACleanup;  
end;
Ce deuxième code permet d'obtenir l'adresse de connexion Internet (en général) :
Code delphi : Sélectionner tout
1
2
3
4
5
6
7
8
function getIP:string;  
Begin  
  With TPowerSock.Create(Nil) do  
  Begin  
    Result:= LocalIP;  
    Free;  
  End;  
End;

Mis à jour le 18 octobre 2013 nut62

La fonction API GetIpAddrTable permet d'obtenir la liste des adresses IP de l'ordinateur. Cette fonction n'est pas définie par défaut dans Delphi, il faut alors la déclarer complètement dans le code.

Code delphi : Sélectionner tout
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Renvoie les adresses IP de la machine sous forme d'un TStrings 
Procedure GetIPAdresses(Result:TStrings);  
Const  
     // Nom de la DLL IP Helper.  
     dllIPHelperName = 'IpHlpApi.dll' ;  
  
Type  
    // Ces éléments n'existent pas dans les unités standard Delphi, il faut  
    // donc tout redéclarer "manuellement".  
  
    // Structure contenant une définition d'adresse  
    TMIB_IpAddrRow = Record  
      dwAddr      : DWord ;  
      dwIndex     : DWord ;  
      dwWordMask  : DWord ;  
      dwBCastAddr : DWord ;  
      dwReasmSize : DWord ;  
      Unused1     : Word  ;  
      Unused2     : Word  ;  
    End;  
  
    // Structure remplie par la fonction GetIpAddrTable  
    PIpAddrTable = ^TIpAddrTable ;  
    TIpAddrTable = Packed Record  
      dwNumEntries : DWord ;  
      Table        : Array[Byte] Of TMIB_IpAddrRow ;  
    End;  
  
  // Définition du prototype de la fonction  
  TGetIpAddrTable  = Function ( IpTable : PIpAddrTable ; Var Long : DWORD ; Order : BOOL ) : DWORD ; stdcall ;  
  
Var  
   GetIpAddrTable : TGetIpAddrTable ;  
   Table          : PIpAddrTable    ;  
   Long           : DWORD           ;  
   I, DLLHandle   : Integer         ;  
Begin  
     Result.Clear; 
     // Chargement de la DLL IP Helper  
     GetIpAddrTable:=Nil;  
     DLLHandle:=0;  
     DLLHandle:=LoadLibrary(dllIPHelperName);  
     If (DLLHandle<>0) Then  
        GetIpAddrTable:=GetProcAddress(DLLHandle,'GetIpAddrTable') ;  
     // Tentative d'appel.  
     If Assigned(GetIpAddrTable) Then  
        Begin  
        // La fonction de récupération d'adresse IP existe, on l'utilise.  
        New(Table);  
        Long:=SizeOf(TIpAddrTable);  
        If GetIpAddrTable(Table,Long,False)=NO_ERROR Then  
           For I:=0 To (Table^.dwNumEntries-1) Do  
              Result.Add( Format('%d.%d.%d.%d', [ Table^.Table[i].dwAddr         And $FF,  
                                                 (Table^.Table[i].dwAddr Shr  8) And $FF,  
                                                 (Table^.Table[i].dwAddr Shr 16) And $FF,  
                                                 (Table^.Table[i].dwAddr Shr 24) And $FF] ) ) ;  
        Dispose(Table);  
        End;  
     // Libération de la DLL, si nécessaire.  
     If (DLLHandle<>0) Then  
        FreeLibrary(DLLHandle);  
End;
Remarque : cette fonction n'existe pas sous Windows 95. Et existe sous Windows NT à partir du SP4.

Mis à jour le 14 janvier 2014 Mac LAK Nono40

L'adresse MAC est un identifiant physique que portent tous les matériels connectés à un réseau (donc, les cartes réseaux). C'est un numéro unique (au monde) inscrit physiquement, donc impossible à modifier.
Ce numéro unique peut servir de base pour générer des clés (type GUID ou autre) spécifiques à un PC : il peut donc servir à empêcher l'utilisation frauduleuse sur des postes non-autorisés...

Code delphi : Sélectionner tout
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
47
48
49
50
51
52
53
54
uses  
  NB30;  
  
function GetAdapterInfo(Lana: Char): String;  
var  
  Adapter: TAdapterStatus;  
  NCB: TNCB;  
begin  
  FillChar(NCB, SizeOf(NCB), 0);  
  NCB.ncb_command := Char(NCBRESET);  
  NCB.ncb_lana_num := Lana;  
  if Netbios(@NCB) <> Char(NRC_GOODRET) then  
  begin  
    Result := 'mac not found';  
    Exit;  
  end;  
  
  FillChar(NCB, SizeOf(NCB), 0);  
  NCB.ncb_command := Char(NCBASTAT);  
  NCB.ncb_lana_num := Lana;  
  NCB.ncb_callname := '*';  
  
  FillChar(Adapter, SizeOf(Adapter), 0);  
  NCB.ncb_buffer := @Adapter;  
  NCB.ncb_length := SizeOf(Adapter);  
  if Netbios(@NCB) <> Char(NRC_GOODRET) then  
  begin  
    Result := 'mac not found';  
    Exit;  
  end;  
  Result :=  
    IntToHex(Byte(Adapter.adapter_address[0]), 2) + '-' +  
    IntToHex(Byte(Adapter.adapter_address[1]), 2) + '-' +  
    IntToHex(Byte(Adapter.adapter_address[2]), 2) + '-' +  
    IntToHex(Byte(Adapter.adapter_address[3]), 2) + '-' +  
    IntToHex(Byte(Adapter.adapter_address[4]), 2) + '-' +  
    IntToHex(Byte(Adapter.adapter_address[5]), 2);  
end;  
  
function GetMACAddress: string;  
var  
  AdapterList: TLanaEnum;  
  NCB: TNCB;  
begin  
  FillChar(NCB, SizeOf(NCB), 0);  
  NCB.ncb_command := Char(NCBENUM);  
  NCB.ncb_buffer := @AdapterList;  
  NCB.ncb_length := SizeOf(AdapterList);  
  Netbios(@NCB);  
  if Byte(AdapterList.length) > 0 then  
    Result := GetAdapterInfo(AdapterList.lana[0])  
  else  
    Result := 'mac not found';  
end;

Mis à jour le 18 octobre 2013 delphi-fan

Les composants TClientSocket et TServerSocket ne sont plus installés par défaut avec Delphi7. Mais ils sont encore fournis. Il suffit d'installer le paquet /bin/dclsockets70.bpl via le menu Composants -> Installer des paquets….

Il faut éviter de s'en servir pour de nouvelles applications, ils sont remplacés par les composants TCPClient/TTcpServer ou les composants Indy TIDTcpClient/TIDTcpServer. Cette méthode n'est donnée ici que pour assurer la compatibilité des applications Delphi 5/Delphi 6 avec Delphi7.

Mis à jour le 18 octobre 2013 Nono40

Les composants TClientSocket et TServerSocket ne sont plus installés par défaut avec Delphi 2005. Mais ils sont encore fournis. Il suffit d'installer le paquet /bin/dclsockets90.bpl via le menu Composants -> Installer des paquets…

Il faut éviter de s'en servir pour de nouvelles applications, ils sont remplacés par les composants Indy TIDTcpClient/TIDTcpServer. Cette méthode n'est donnée ici que pour assurer la compatibilité des applications Delphi5/Delphi6 avec Delphi 2005.

Mis à jour le 14 janvier 2014 Nono40

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2019 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Delphi : Gilles Vasseur - Alcatîz -

Partenaire : Hébergement Web