2016-04-01 4 views
-1

Я пытаюсь получить идентификатор UUID Entryhandle, отправив запрос. Тем не менее, я получаю эту ошибку каждый раз. Может ли кто-нибудь помочь мне решить проблему или указать, где я делаю ошибку?LUA Ошибка: попытаться проиндексировать значение nil @ 6: 16

local config={} 

config.mcast_mac = "00:0a:cd:16:da:f1" 


function rpc:epm()                  


local pkt = CreateFromPath("ethernet/ip/udp/dcerpc/epm") 

--[[data is put here]] 


SendAndWait(pkt, function(res) 
local epm = res.get_layer("epm") 
--[[data is put here--]] 
handle = epm.EntryHandleUUID.to_string() 

print("EntryHandleUUID:",handle) 

end 



end,2000) 

    return handle 

    end 
+0

Ваша ошибка в том, что вы указали нулевое значение. одна из ваших переменных равна нулю. поэтому вы не можете получить доступ к любому из своих членов, используя оператор точки. разве у вас нет трассировки стека с номерами строк? – Piglet

ответ

0

Этот код не действителен Код Lua. Предположим удалить end из строки после print. Чтобы узнать, где вы пытаетесь получить доступ к значению nil, вы можете просто добавить assert перед каждой операцией индекса.

local config={} 

config.mcast_mac = "00:0a:cd:16:da:f1" 

assert(rpc, 'rpc is NULL') 

function rpc:epm() 
    local pkt = CreateFromPath("ethernet/ip/udp/dcerpc/epm") 
    --[[data is put here]] 
    SendAndWait(pkt, function(res) 
    assert(res, 'res is NULL') 
    local epm = res.get_layer("epm") 
    --[[data is put here--]] 
    assert(epm, 'epm is NULL') 
    local uuid = epm.EntryHandleUUID 
    assert(uuid, 'epm.EntryHandleUUID is NULL') 
    handle = uuid.to_string() 
    print("EntryHandleUUID:",handle) 
    end, 2000) 
    return handle 
end 

 Смежные вопросы

  • Нет связанных вопросов^_^