Пример работы с файлами в QLua (Lua)

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 5, среднее: 4,20 из 5)
Загрузка...

Qlua-основы

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
-- Флаг поддержания работы скрипта
IsRun = true;
 
function main()
   -- Пытается открыть файл в режиме "чтения/записи"
   f = io.open(getScriptPath().."\\Test.txt","r+");
   -- Если файл не существует
   if f == nil then 
      -- Создает файл в режиме "записи"
      f = io.open(getScriptPath().."\\Test.txt","w"); 
      -- Закрывает файл
      f:close();
      -- Открывает уже существующий файл в режиме "чтения/записи"
      f = io.open(getScriptPath().."\\Test.txt","r+");
   end;
   -- Записывает в файл 2 строки
   f:write("Line1\nLine2"); -- "\n" признак конца строки
   -- Сохраняет изменения в файле
   f:flush();
   -- Встает в начало файла 
      -- 1-ым параметром задается относительно чего будет смещение: "set" - начало, "cur" - текущая позиция, "end" - конец файла
      -- 2-ым параметром задается смещение
   f:seek("set",0);
   -- Перебирает строки файла, выводит их содержимое в сообщениях
   for line in f:lines() do message(tostring(line));end
   -- Закрывает файл
   f:close();
   -- Цикл будет выполнятся, пока IsRun == true
   while IsRun do
      sleep(100);
   end;   
end;
 
function OnStop()
   IsRun = false;
end;

Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

Пример работы с файлами в QLua (Lua): 117 комментариев

  1. День добрый.
    как получить значение из последней строки в txt файле?
    как получить значение из последний строки предпоследнего столбца в файле csv, или например 3 столбца?

    1. Добрый день, готовых функций для этого нет, вариант только изобретать свои, используя функции работы со строками, потому что текстовый файл, это, по сути, один массив символов, в котором строки отделяются символами переноса строки "\n", в CSV файле то же самое, строки разделены символами "\n", а ячейки символами ";" чаще всего. Если Вам нужно работать с разными элементами файла, то попробуйте лучше вот эту технологию применить: https://quikluacsharp.ru/quik-qlua/sohranenie-parametrov-skripta-qlua-lua-mezhdu-zapuskami/
      Там все сводится к удобной работе с таблицей lua, ее считыванием из файла, изменением и повторным сохранением в файл.

  2. Добрый день!
    Данный скрипт

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
    IsRun = true;
    function main()
    f=io.open(getScriptPath("C:\\ROBOT\\TIC.txt"),"r+");
    if f == nil then 
    f=io.open(getScriptPath("C:\\ROBOT\\TIC.txt"),"w");
    f:close();
    f=io.open(getScriptPath("C:\\ROBOT\\TIC.txt"),"r+");
    f:write("5");
    f:flush();
    f:close();
    end;
    while IsRun do
          sleep(100);
       end;   
    end;
    function OnStop()
       IsRun = false;
    end;

    Ошибка lua:6: attempt to index global 'f' (a nil value)
    Помогите разобраться!