Results 1 to 5 of 5

Thread: IPTypes.pas: IPv4 en IPv6 custom variant types

  1. #1
    Silly member NGLN's Avatar
    Join Date
    Aug 2004
    Location
    Werkendam
    Posts
    5,133

    IPTypes.pas: IPv4 en IPv6 custom variant types

    IPTypes.pas, een unit bomvol met conversieroutines van en naar IP-adressen in de bekende IPv4 en IPv6 formaten.

    Tevens registreert de unit "custom variant types" voor deze speciale dataformaten waarmee je onder andere onderstaande bewerkingen kunt uitvoeren:
    Delphi Code:
    1. procedure TForm1.Log(const S: String);
    2. begin
    3.   Memo.Lines.Add(S);
    4. end;
    5.  
    6. procedure TForm1.Button1Click(Sender: TObject);
    7. var
    8.   I4: TIPv4;
    9.   I6: TIPv6;
    10.   V1, V2, V3, V4: Variant;
    11. begin
    12.   I4 := StrToIPv4('192.0.2.128');
    13.   I6 := IPv4ToIPv6(I4);
    14.   V1 := VarIPv6Create('2001:db8:85a3:0:0:8a2e:0370:7334');
    15.   V2 := IPv6ToVar(I6);
    16.   V3 := V1 - V2;
    17.   V4 := V1 or V2;
    18.   if V3 < V4 then
    19.     Log(V3 + ' is kleiner dan ' + V4);
    20.   if V2.Equals('::ffff:192.0.2.128') or V2.IsZero then
    21.     Log('OK');
    22.   Log('V1 = ' + V1.AsStringOutwritten);
    23.   Log('V2 = ' + V2.AsURL);
    24.   Log('V3 = ' + V3.AsStringCompressed);
    25.   V4.Follow;
    26. end;
    Wel, als dit niet een enorm handige unit voor IP-adressen is (lees: "leuk, maar ik zie het nut er niet zo van in"), zie het dan als een naslagwerk van het maken van een custom variant type.

    Waar te vinden?
    (Sender as TNLDUser).Signature := 'Groeten van Albert';

  2. #2
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Even na gekeken, een aantal opmerkingen:
    1. De unit is portable, op de shellexecute functionaliteit na. Kan dat niet meer plugin afgehandeld worden (met b.v. een procedure variabele hook?)
    2. De unit compileert op FPC/win32 met een parameter om FPC in Delphi mode te zetten, een {$ifdef fpc}{$mode delphi}{$endif} onder de "interface" regel zou dat automatisc doen
    3. Op 64-bits FPC compileert de unit niet. Batterijen (*) Error: Illegal type conversion: "tvardata" to "TIPv4VarData". Zoek ik nog uit.

  3. #3
    Hallo Marco,

    Ik kwam dit tegen voor een klant, is het gelukt met de foutmeldingen in 64 bits?

  4. #4
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Geen idee meer wat ik toen gedaan heb. Meestal betekent dit dat ik een bug gefiled heb, en dat ik daar niet direct respons op heb gekregen.

  5. #5
    Bedankt! Weet je zo ook een andere functie of component die iets vergelijkbaars doet? Dus waar je een IPv4 of een IPv6 kan controleren binnen een subnet / range?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •