IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Web & réseau Delphi Discussion :

Fonction pour récuperer mon adresse IP


Sujet :

Web & réseau Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 42
    Points : 23
    Points
    23
    Par défaut Fonction pour récuperer mon adresse IP
    Bonjour à tous je suis embeté est ce que quelqu'un pourait me dire comment et quelle fonction utiliser dans mon programme pour récuperer le nom de ma machine ainsi que son adresse ip Merci

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Sachant que le nom de la machine et l'adresse IP sont des concepts purement Windowsiens, je dirais que récupérer ces deux éléments est impossible, parce que Turbo Pascal est fait pour DOS... A moins que tu n'utilises un compilateur Windows, dans ce cas, il faudra chercher du coté des API . Pour le nom de la machine, il existe une fonction GetComputerName :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm1.Button1Click(Sender: TObject);
    var buffer:array[0..255] of char;
    var size:cardinal;
    begin
    size:=256;
    GetComputerName(@buffer,size);
    ShowMessage(buffer);
    end;
    Pour l'IP, il faudra sûrement passer par un composant Internet...
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    J'avoue alors que je suis très en retard et que j'ai pas compris grand chose a la programmation, j'ai voulus m'interesse a C++ et j'ai trouvé que c'etait pas le TOP donc unpeu trop complexe pour un debutant... pour apprendre a programmer des trucs sympa...

    J'ai vraiment besoin d'un conseil que dois je choisir comme langage de programmation pour creer des programmes me permettant de recuperer mon adresse ip le nom de ma machine creer des exe me permettant d'automatiser des taches et tous ça en mode console donc dans une fenetre DOS.

    Ma deuxième question serait est ce que turbo pascal 7.0 cree seulement des programme qui s'execute sous dos ??? et dans ces cas je comprend pas puisque je les execute dans une fenetre dos sous windows 2000...

    Voila eclairez moi SVP Merci !!!

  4. #4
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    puisque que vous avez choisi Pascal plutôt que C++,

    utilisez DevPascal (IDE) qui utilise FreePascal un compilateur 32bits
    gratuit qui a accès aux API windows

    http://bloodshed.ygto.com/dev/devpas192.exe

    vous ne parlerez plus de fenêtre DOS mais de fenêtre console

  5. #5
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Delphi est également capable de faire des applications en mode console.

    Tu peux télécharger une version gratuite (Delphi Edition Personnelle) sur le site de Borland. Tu trouveras tous les liens nécessaires sur http://www.developpez.com .

    Sinon, pour récupérer ton IP, voilà un exemple se servant de WinSocks :
    (c'est du Delphi)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    program GetIP;
     
    uses
      Windows, WinSock, SysUtils;
     
    var
      WSData: WSAData;
      HostName: array[0..255] of Char;
      Host: PHostEnt;
      Error: Integer;
      IP: string;
     
    begin
    if WSAStartup($0001, WSData) <> 0 then
      begin
      MessageBox(0, 'Impossible d''initialiser WinSock !', 'GetIP', MB_ICONERROR or MB_OK);
      Halt(1);
      end;
    if WSData.wVersion <> $0001 then
      begin
      WSACleanup;
      MessageBox(0, 'Version incorrecte de WinSock !', 'GetIP', MB_ICONERROR or MB_OK);
      Halt(1);
      end;
     
    Error := GetHostName(HostName, SizeOf(HostName));
    if Error <> 0 then 
      begin
      MessageBox(0, 'Impossible de récupérer l''identificateur local de l''ordinateur !',
                 'GetIP', MB_ICONERROR or MB_OK);
      end
    else
      begin
      Host := GetHostByName(HostName);
      if Host <> nil then
        begin
        IP := 'Adresse IP identifiée avec succès : ' + IntToStr(Byte(Host^.H_Addr^[0])) + '.' +
                                                       IntToStr(Byte(Host^.H_Addr^[1])) + '.' +
                                                       IntToStr(Byte(Host^.H_Addr^[2])) + '.' +
                                                       IntToStr(Byte(Host^.H_Addr^[3]));
        MessageBox(0, StrPCopy(HostName, IP), 'GetIP', MB_ICONINFORMATION or MB_OK);
        end
      else
        MessageBox(0, 'Impossible de retrouver l''adresse IP !', 'GetIP', MB_ICONERROR or MB_OK);
      end;
     
    WSACleanup;
    end.
    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  6. #6
    HRS
    HRS est déconnecté
    Membre confirmé
    Avatar de HRS
    Inscrit en
    Mars 2002
    Messages
    677
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 677
    Points : 638
    Points
    638
    Par défaut
    le code de Hdd34 marche impec avec FreePascal

  7. #7
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 42
    Points : 23
    Points
    23
    Par défaut heeee !!! ouai mais ....
    Merci pour toute votre réponses, je trouve le dernier code hyper long, et incompréhensible et je me demande si je comprendrais un jour de quoi il sagit !!!!! c peut etre parceque je suis débutant !!!! je sais pas ya pas unpeu plus simple sans la gestion des erreurs ça serait mieux plus court et plus facile a comprendre .... Merci !!!

  8. #8
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Euh il faut dire que ce que tu essaies de faire est assez "compliqué" !!
    Personnellement, j'ai commencé sous TP7 en faisant joujou avec la BGI... Tout le monde commence par Delphi maintenant, mais je pense pas que ce soit approprié, car le Pascal Objet ça s'apprend pas comme ça... Tu devrais peut-être faire quelques programmes avec TP7 pour t'habituer à la syntaxe et aux objets.
    Pour répondre à une de tes questions, les programmes pour DOS sont exécutés sous XP car il contient un noyau DOS...
    a+
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  9. #9
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    On peut réduire considérablement le code, sans la gestion des erreurs. Mais je dégage toute responsabilité quant à un éventuel plantage !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    program GetIP; 
     
    uses 
      Windows, WinSock; 
     
    var 
      WSData: WSAData; 
      HostName: array[0..255] of Char; 
      Host: PHostEnt; 
     
    begin 
    { Initialisation de WinSocks }
    WSAStartup($0001, WSData);
     
    { Récupération du nom de l'ordinateur }
    GetHostName(HostName, SizeOf(HostName)); 
    { Et récupération des infos sur l'ordinateur, dont l'IP }
    Host := GetHostByName(HostName); 
     
    { Affichage de l'IP }
    WriteLn('IP: ', Host^.H_Addr^[0], '.', Host^.H_Addr^[1], '.',
                    Host^.H_Addr^[2], '.', Host^.H_Addr^[3]);
     
    { Fermeture de WinSocks }
    WSACleanup; 
    end.

    Il y a moins de code "obscur" peut-être. Mais on pourra difficilement faire mieux avec WinSocks.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  10. #10
    Membre à l'essai
    Inscrit en
    Novembre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 42
    Points : 23
    Points
    23
    Par défaut Merci !!!
    Merci hdd34 c vraiment sympa je suis content j'apprend des choses Merci !!!

  11. #11
    Membre averti Avatar de charly
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 329
    Points : 358
    Points
    358
    Par défaut
    sous delphi 7 il y a un des composants indy qui renvoie l ip ... sinon , sa fias une ligne de code !!
    6*8 =42

  12. #12
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Certes, mais les composants Indy n'existent pas sur tous les compilateurs.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/04/2010, 18h46
  2. fonction pour valider une adresse ip
    Par charlie_p07 dans le forum Requêtes
    Réponses: 4
    Dernier message: 31/10/2008, 14h52
  3. Réponses: 5
    Dernier message: 29/04/2008, 14h30
  4. Réponses: 6
    Dernier message: 21/04/2008, 18h49
  5. Réponses: 6
    Dernier message: 31/07/2006, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo