| 
| 
 | Вопрос # 5 913/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!получаю МАС адрес компьютера функцией, повсеместно лежащей в инете. Проблема в том что работает только на 2х компах где стоит дельфи. на чистых компах возвращает ПУСТУТЮ СТРОКУ, почему - не понимаю.
 Приложение:Переключить в обычный режим function GetMACAdress(var pureMac: string): 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);      pureMac := 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;
|  |   Вопрос задал: AlexMPEI (статус: 1-ый класс)Вопрос отправлен: 27 января 2012, 17:44
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 28 января 2012, 10:23; участников в обсуждении: 3. 
|   | bugmenot (статус: 3-ий класс), 27 января 2012, 22:57 [#1]:а что сказал аффтар? виконання програми розпочинається з того самого мiсця, де призупинилося.
 
 |  
|   | AlexMPEI (статус: 1-ый класс), 27 января 2012, 23:22 [#2]:автора не найти. да и примудрого особо в этой функции ничего нет. Просто если поискать по инету "получить МАС" то на всех сайтах приводится эта ф-я в разных вариациях. Я пробовал на 4х компьютерах. На тех 2х где есть Delphi (Win XP, Vista) она отлично выдает МАС (я не утверждаю что причина именно в Delphi, на этих компьютерах очень много чего еще стоит), а на 2х чистых пользовательских компах (Win XP) она выдает "". Абсолютно не понимаю возможную причину такого поведения. |  
|   | SOA (статус: Посетитель), 27 января 2012, 23:29 [#3]:to AlexMPEI: Скорее всего какая то из используемых функций привязана к dll устанавливаемым вместе с Delphi, попробуйте проверить к каким библиотекам обращаются все используемые функции. |  
|   | AlexMPEI (статус: 1-ый класс), 28 января 2012, 10:23 [#4]:для этой функции в usus подкючается файл NB30 - работа с нетбиос |  29 января 2012, 12:44: Вопрос перемещён из тематического раздела Delphi » Взаимодействие с Windows в раздел Delphi » Работа с сетями и протоколами модератором Ерёмин А.А. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |