У меня есть следующие 3 функции:Run терпит неудачу во время отладки нормально
function getName() -- returns filename without ext
local files = scandir(currentDir())
local name = nil
for i = 1, #files do
if isValidExt(getExt(files[i])) then
name = getFilename(files[i])
break
end
end
return name
end
function currentDir()
local string = debug.getinfo(1).source
local endPoint = getLastOcurrence(string, '/')
local dir = string.sub(string, 2, endPoint)
return dir
end
function getLastOcurrence(str, char)
local last = string.find(string.reverse(str), char, 1, true)
return #str - last
end
Странным является то, что отладка заканчивается без проблем, во время работы дает ошибку:
...\Downloader.lua:22: attempt to perform arithmetic on local 'last' (a nil value)
stack traceback:
...\Downloader.lua:22: in function 'getLastOcurrence'
...\Downloader.lua:39: in function 'currentDir'
...\Downloader.lua:50: in function 'getName'
Что может вызвать такую разницу между отладкой и запуском?
Я не думаю, что здесь проблема, я думаю, что интерпретатор автоматически конвертирует все '/' в '\', так как я строю из Windows. – user2779657
Возможно, мое предварительное объяснение того, почему в имени файла отсутствует '/', неверно, но проблема * конечно * в том, что в имени файла нет '/'. Сделайте то, что я сказал: добавьте 'print (string)' после строки 'local string = debug.getinfo (1) .source'. Другая возможность заключается в том, что вы работаете из каталога, в котором находится исходный файл ... – catwell
Во всяком случае, * * * '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' '(потому что, как говорится в сообщении об ошибке,' last' является 'nil'). – catwell