26

Re: Запись логов в файл из Lua-скриптов, PrintDbgStr для логирования

ascerdfg пишет:

Единственное что Квик перестал ругаться при его закрытии.

Судя по вашему [url=https://quik2dde.ru/viewtopic.php?pid=1412#p1412]сообщению в соседней теме[/url], Квик ругается не на закрытие файла, а на попытку записи в файл после его закрытия, о чём вас честно [url=https://quik2dde.ru/viewtopic.php?pid=1413#p1413]предупредили[/url] (Квик, кстати сообщает номер строки, в которой произошла ошибка - посмотрите).
Само же закрытие файла в том примере проходит успешно, поэтому и не видно разницы, что с file:flush(), что без него.

27

Re: Запись логов в файл из Lua-скриптов, PrintDbgStr для логирования

Разобрался. Просто я думал что notepad++ спрашивает, обновить ли в нём файл, каждый раз когда он изменяется, а оказывается нотпад проверяет, обновился ли файл, после того как файл закроется.

28

Re: Запись логов в файл из Lua-скриптов, PrintDbgStr для логирования

sam063rus пишет:

не буду тут особо умничать/влезать - но просто, думаю надо задаться вопросом: а с какими атрибутами открывался файл? share deny etc.

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

29

Re: Запись логов в файл из Lua-скриптов, PrintDbgStr для логирования

Мануалы почитал, эксперименты попроводил - а вот нет такой возможности, однако.
Файл безусловно открывается в shared mode на запись, средств изменить это - нет в Lua.

30

Re: Запись логов в файл из Lua-скриптов, PrintDbgStr для логирования

В общем, ничё умнее я не придумал, кроме как поместить функции чтения/записи в отдельную функцию и вызывать её в защищённом режиме:

function ReadLine(file)
  return file:read()
end
function ReadFile(file)
  for line in file:lines() do
    -- Тут обрабатываем строку
  end
end
local file, err = io.open(FileName)
if file then  -- открыть-то мы открыли файл, но не факт, что нам дадут в дальнейшем его прочитать
              -- то же и с записью
  pcall(ReadLine, file)
  pcall(ReadFile, file)
end

поскольку удачное открытие файла ещё [url=https://quik2dde.ru/viewtopic.php?pid=1295#p1295]не говорит[/url] об удачной дальнейшей работе с этим файлом.

31 (2015-11-19 18:55:52 отредактировано swerg)

Re: Запись логов в файл из Lua-скриптов, PrintDbgStr для логирования

CyberTrader, я как-о не могу понять как связаны ваши два сообщения: одно про монопольный доступ на запись, другое - про проблемы с открытием файла на чтение...

32 (2015-11-19 19:50:59 отредактировано CyberTrader)

Re: Запись логов в файл из Lua-скриптов, PrintDbgStr для логирования

Ну, я ж там написал, что существует ненулевая вероятность проблем чтения/записи из/в файл(а).
Именно, не открытия, а дальнейшей работы после "удачного" открытия.

Да и вообще монопольный режим не помешал бы. smile