如何关闭编译警告 Value assigned to 'XXX' never used(100分)

  • 主题发起人 主题发起人 lps
  • 开始时间 开始时间
L

lps

Unregistered / Unconfirmed
GUEST, unregistred user!
我的一个过程中使用了两次
RetCode:=Netbios(NCB);
目的就是通过调用函数来跳过某些内容,因此是正常的使用,但是使用
{$WARNINGS OFF}和{$WARNINGS ON},不论如何放置都不起作用啊
 
我也想知道,帮顶。
 
{$WARNINGS OFF}
 
既然不使用这个值,那就直接改成
Netbios(NCB);
不要赋值RetCode
 
谢谢hanpengshan_00的回答,从我原来的问题来看你的回答应该是有用的,现在我自己也找到了一个标准答案:{$HINTS OFF},这个可行。

但是:我的代码其实是网上找的获取MAC的,我对于NETBIOS也不太熟悉,当时没看仔细,现在仔细一看,RetCode其实是用到了的(if语句中,虽然没有用它来赋值),我觉得根本就不应该出现这个警告啊!

所以现在的问题变成了为什么会有这个警告?

代码如下:


function GetMACAdress:string;
var
NCB:PNCB;
Adapter:PAdapterStatus;
RetCode:char;
I:integer;
Lenum:PlanaEnum;
_SystemID: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;
RetCode:=Netbios(Ncb);

Fillchar(NCB^,SizeOf(TNCB),0);
Ncb.ncb_command:=chr(NCBASTAT);
Ncb.ncb_lana_num:=lenum.lana;
// Must be 16
StrPCopy(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;
 
代码没仔细看,现在终于看清楚了,hanpengshan_00说得对,编译器也没有问题,第一、二处对RetCode的赋值
RetCode:=Netbios(NCB);
的确应该写成
Netbios(NCB);
而不要赋值(if语句引用RetCode前共赋值三次,只有第三次起作用),这样就不会有编译警告了。
 
后退
顶部