자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 맥 어드레스를 못가져오는 경우?
2021.03.29 16:29
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
델파이 XE2 사용
아래 소스로 맥주소를 가져오는데
맥주소를 못가져오는 경우가 있네요
어떨때 못가져오는지
어떻게 가져올수 있는지 알수 있을까요?
function GetMACAddress: string;
var
AdapterList: TLanaEnum;
NCB: TNCB;
Adapter: TAdapterStatus;
Lana: AnsiChar;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB);
if Byte(AdapterList.length) > 0 then
begin
Lana := AdapterList.lana[0];
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := AnsiChar(NCBRESET);
NCB.ncb_lana_num := Lana;
if Netbios(@NCB) <> AnsiChar(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBASTAT);
NCB.ncb_lana_num := Lana;
NCB.ncb_callname := '*';
FillChar(Adapter, SizeOf(Adapter), 0);
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;
Result := Result + IntToHex(Byte(Adapter.adapter_address[0]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[1]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[2]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[3]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[4]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[5]), 2);
end
else
Result := 'mac not found';
end;
Delphi 맥 어드레스를 못가져오는 경우?
2021.03.29 16:29
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
델파이 XE2 사용
아래 소스로 맥주소를 가져오는데
맥주소를 못가져오는 경우가 있네요
어떨때 못가져오는지
어떻게 가져올수 있는지 알수 있을까요?
function GetMACAddress: string;
var
AdapterList: TLanaEnum;
NCB: TNCB;
Adapter: TAdapterStatus;
Lana: AnsiChar;
begin
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBENUM);
NCB.ncb_buffer := @AdapterList;
NCB.ncb_length := SizeOf(AdapterList);
Netbios(@NCB);
if Byte(AdapterList.length) > 0 then
begin
Lana := AdapterList.lana[0];
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := AnsiChar(NCBRESET);
NCB.ncb_lana_num := Lana;
if Netbios(@NCB) <> AnsiChar(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;
FillChar(NCB, SizeOf(NCB), 0);
NCB.ncb_command := Char(NCBASTAT);
NCB.ncb_lana_num := Lana;
NCB.ncb_callname := '*';
FillChar(Adapter, SizeOf(Adapter), 0);
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
if Netbios(@NCB) <> Char(NRC_GOODRET) then
begin
Result := 'mac not found';
Exit;
end;
Result := Result + IntToHex(Byte(Adapter.adapter_address[0]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[1]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[2]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[3]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[4]), 2) + ':';
Result := Result + IntToHex(Byte(Adapter.adapter_address[5]), 2);
end
else
Result := 'mac not found';
end;
정확히 맥 주소를 구해오지 못하는 경우의 이유는 잘 모르겠습니다.
다음은 맥 주소를 구해오는 다른 예제입니다. 1번 방법은 비슷하지만 조금 다릅니다. 참조하시기 바랍니다.
https://blog.hjf.pe.kr/486
https://rduk.tistory.com/52