Know MAC address

Solved
nabil-bago Posted messages 289 Status Member -  
nabil-bago Posted messages 289 Status Member -
Hello everyone,
I have a small issue, I’m looking for how to know/display the MAC address in Delphi.
I searched and found some functions but they don’t work

Thank you all

3 answers

  1. Nessdarth Posted messages 40 Status Member 3
     
    Hello,

    You should give what you found; there may be a small error.
    1
  2. nabil-bago Posted messages 289 Status Member 13
     
    Translate to English:
     function GetMACAdress: string; var NCB: PNCB; Adapter: PAdapterStatus; URetCode: PChar; RetCode: char; I: integer; Lenum: PlanaEnum; _SystemID: string; TMPSTR: string; begin Result := ''; _SystemID := ''; Getmem(NCB, SizeOf(TNCB)); Fillchar(NCB^, SizeOf(TNCB), 0); Getmem(Lenum, SizeOf(TLanaEnum)); Fillchar(Lenum^, SizeOf(TLanaEnum), 0); Getmem(Adapter, SizeOf(TAdapterStatus)); Fillchar(Adapter^, SizeOf(TAdapterStatus), 0); Lenum.Length := chr(0); NCB.ncb_command := chr(NCBENUM); NCB.ncb_buffer := Pointer(Lenum); NCB.ncb_length := SizeOf(Lenum); RetCode := Netbios(NCB); i := 0; repeat Fillchar(NCB^, SizeOf(TNCB), 0); Ncb.ncb_command := chr(NCBRESET); Ncb.ncb_lana_num := lenum.lana[I]; RetCode := Netbios(Ncb); Fillchar(NCB^, SizeOf(TNCB), 0); Ncb.ncb_command := chr(NCBASTAT); Ncb.ncb_lana_num := lenum.lana[I]; // Must be 16 Ncb.ncb_callname := '* '; Ncb.ncb_buffer := Pointer(Adapter); Ncb.ncb_length := SizeOf(TAdapterStatus); RetCode := Netbios(Ncb); //---- calc _systemId from mac-address[2-5] XOR mac-address[1]... if (RetCode = chr(0)) or (RetCode = chr(6)) then begin _SystemId := IntToHex(Ord(Adapter.adapter_address[0]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[1]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[2]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[3]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[4]), 2) + '-' + IntToHex(Ord(Adapter.adapter_address[5]), 2); end; Inc(i); until (I >= Ord(Lenum.Length)) or (_SystemID <> '00-00-00-00-00-00'); FreeMem(NCB); FreeMem(Adapter); FreeMem(Lenum); GetMacAdress := _SystemID; end; 
    the errors:
    at lines 28,35 and45
    [dcc32 Error] Unit6.pas(53): E2010 Incompatible types: 'Char' and 'AnsiChar'
    0
    1. Nessdarth Posted messages 40 Status Member 3
       
      Hello, You only change this: RetCode: AnsiChar; I tested and it works.
      0
      1. nabil-bago Posted messages 289 Status Member 13 > Nessdarth Posted messages 40 Status Member
         
        Hello again,
        it works,
        Thank you very much NessDarth for your help
        0
  3. nabil-bago Posted messages 289 Status Member 13
     
    There is an error at the last line (label1.Caption := GetMacAddresses;) [dcc32 Error] Unit6.pas(138): E2035 Not enough actual parameters
    0