Announcement

Collapse
No announcement yet.

Einzelne Stelle der IP ermitteln

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Einzelne Stelle der IP ermitteln

    Hallo,

    ich habe mal ein kleines Problem die Ermittlung der IP betreffend.
    In meinem Programm wird mittels Komponente <b>TPowerSock</b>, ist anscheinend nur in der Enterprise-Version enthalten, die lokale IP ermittelt.<br>
    Das kann man ja einfach mit <b>PowerSock1.LocalIP</b> bewältigen.<br>
    Nun möchte ich aber nicht alle Stellen dieser IP wiedergeben.<br>
    Es soll die IP bis auf die letzte Stelle angezeigt werden. Also z.B. bei einer IP von 192.168.1.100 soll nur 192.168.1 angezeigt werden.<br>
    Tja, und da liegt wohl das Problem.<p>
    Ich habe die Geschichte mal versucht und das sieht dann so aus:<br>
    <pre>
    procedure ...
    var MAX_BUFFER: Cardinal;
    Buffer: array[0..20] of char; // um ganz sicher zu sein
    begin
    MAX_BUFFER:=Length(PowerSock1.LocalIP)-3; // um drei Stellen kürzen
    Edit1.Text:=StrLCopy(Buffer, PChar(PowerSock1.LocalIP), MAX_BUFFER);
    end;
    </pre><p>

    Nun gut, das funktioniert so weit ja auch. Leider aber nur wenn die letzte Stelle in der IP dreistellig ist. Also bei 192.168.1.100 funktionierts, bei 192.168.1.1 wird schon wieder zu viel abgeschnitten.<br>
    Hätte da jemand ein paar Tips für mich? Eventuell lässt sich das ja auch einfacher lösen. Dafür wäre ich überaus dankbar

    mfg

    Torsten Bloth

  • #2
    Hi Torsten,<br> ich würde den <b> Format </b> - Befehl benutzen. In der Delphihilfe gibt es sogar ein sehr gutes Beispiel !! <br> Gruss Sus

    Comment


    • #3
      Hallo Susi!

      Besten Dank für den Tip.
      Werde mir die Geschichte mal ansehen.

      mfg

      Torste

      Comment


      • #4
        <pre>

        var
        IP: String;
        I: Integer;
        begin
        IP := PowerSock.LocalIP;
        SetLength(IP, StrRScan(PChar(IP), '.') - PChar(IP) + 1);

        // oder..
        I := Length(IP);
        while IP[I] <> '.' do Dec(I);
        SetLength(IP, I + 1);
        end;

        </pre>

        Gruß Hage

        Comment


        • #5
          Hallo Hagen!

          Besten Dank für den Tip.
          Genau solch eine Lösung habe ich gesucht. Das passt wunderbar.
          Nochmals vielen Dank.

          mfg

          Torste

          Comment

          Working...
          X