Перейти к содержимому
  • 0

Вопрос

Делаю файловый менеджер, когда нажимаю на папку нечего не обновляется и не меняются папки?
Код нажатия:

 

    while true do
      local id, _, x, y = event.pull("touch")
      if id == "touch" then
	  if filesystem.isDirectory(fileindex[y]) == true then
		directory = fileindex[y]
		getfiles(directory)
		realoadlist()
		end
		if filesystem.isDirectory(fileindex[y]) == false then	
		os.execute(fileindex[y])
      end
	  if x == 1 and y == 25 then
		getfiles(directory)
		realoadlist()
		end
    end
end

 


Код чтение файлов:

 

function getfiles(dir)
	for file in filesystem.list(dir) do
      tempload = tempload + 1
	  fileindex[tempload] = file
	  end
end	

 


Код отрисовки:

 

function realoadlist()
    getfiles(directory)
    term.clear()
    for i = 1,24 do
    gpu.set(1, i, "█")
    gpu.set(2, i, fileindex[i])
        if filesystem.isDirectory(fileindex[i]) then
        gpu.setForeground(0xfdff00)
        gpu.set(1, i, "█")
        gpu.setForeground(0xffffff)
        end
    end
end

 

 

Изменено пользователем Laine_prikol

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

А функция чтения содержимого директории разве не должна очищать таблицу с именами перед занесением в нее новых?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

А функция чтения содержимого директории разве не должна очищать таблицу с именами перед занесением в нее новых?

Всё равно не работает вот сделал очистку таблицы:

function getfiles(dir)
	for file in filesystem.list(dir) do
	  tempload = tempload + 1
	  fileindex[tempload] = nil
	  fileindex[tempload] = file
	  end
end

И другой вариант просто превращал все файлы в none:

for k in pairs (fileindex) do
    fileindex [k] = "none"
end

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Всё равно не работает вот сделал очистку таблицы:

function getfiles(dir)
	for file in filesystem.list(dir) do
	  tempload = tempload + 1
	  fileindex[tempload] = nil
	  fileindex[tempload] = file
	  end
end

 

Этот вариант совершенно бесполезен. Нет смысла присваивать полю таблицы сначала nil, а затем требуемое значение. Зато при таком использовании переменной tempload начало таблицы не меняется, а файлы дописываются в ее конец.

 

И другой вариант просто превращал все файлы в none:

for k in pairs (fileindex) do
    fileindex [k] = "none"
end

 

Этот вариант интереснее для отладки. Только я не вижу, что как там у тебя обновляется содержимое экрана. none тоже не выводится, и сохраняется старое содержимое директории? Или что там еще происходит?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

А где обнуляется переменная tempload?

Сделал, теперь не очищается экран при переходе в папку вот код:

function realoadlist()
	getfiles(directory)
	gpu.fill(1, 1, w, h, " ")
	for i = 1,24 do
	gpu.set(1, i, "█")
	gpu.set(2, i, fileindex[i])
		if filesystem.isDirectory(fileindex[i]) then
		gpu.setForeground(0xfdff00)
		gpu.set(1, i, "█")
		gpu.setForeground(0xffffff)
		end
	end
end
    while true do
      local id, _, x, y = event.pull("touch")
      if id == "touch" then
	  if filesystem.isDirectory(fileindex[y]) == true then
		gpu.fill(1, 1, w, h, " ")
		directory = fileindex[y]
		getfiles(directory)
		realoadlist()
		end
		if filesystem.isDirectory(fileindex[y]) == false then	
		os.execute(fileindex[y])
      end
	  if x == 1 and y == 25 then
		getfiles(directory)
		realoadlist()
		end
    end
end

P.S С term.clear() тоже самое Изменено пользователем Laine_prikol

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

@@Laine_prikol,

1) Кинь код на pastebin или еще куда-нибудь, чтобы у всех, кто хочет помочь тебе, была возможность видеть код полностью. Иначе тяжело разбираться, что у тебя не работает.

2) Приведи отступы в порядок. Тяжело же разбираться с этим:

KQiSuKt.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

 

@@Laine_prikol,

1) Кинь код на pastebin или еще куда-нибудь, чтобы у всех, кто хочет помочь тебе, была возможность видеть код полностью. Иначе тяжело разбираться, что у тебя не работает.

2) Приведи отступы в порядок. Тяжело же разбираться с этим:

KQiSuKt.png

 

 

https://pastebin.com/RPf0PFRP вот пастбин Изменено пользователем Laine_prikol

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

https://pastebin.com/RPf0PFRP вот пастбин

Ты движешься в верном направлении. Осталось поправить отступы. Если лень заниматься отступами самостоятельно, то для этих случаев Добрая Администрация добавила Форматтер Lua-кода:

q5jQZuI.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
for i = 24,38 do
  i = i - 23
    ....
end

Это что еще за конструкция? Кто тебя учил изменять в цикле for переменную-итератор? Бросай эти штучки

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

 

fileindex = {"none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none","none"}
Изменено пользователем LeshaInc

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

@@Zer0Galaxy,@@LeshaInc, это похоже на неудачные попытки отладить код, и эти недочеты не очень существенны.

Проблема в другом месте.

 

Но об этом после приведения отступов в порядок, т.к. имеющиеся вызывают у меня головокружение. У автора, возможно, тоже – это объяснило бы странности в коде. А с отступами и ошибки станут виднее. И самому автору тоже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...