Size: a a a

2020 July 12

MH

Maxim H in pro.lua
источник

MH

Maxim H in pro.lua
Vlad Doc
найти последний символ '\\' или '/' и сделать подстроку до него?
Как строку превратить в массив уникодных символов?

Р.s. я то надеялся на стандартный механизм, а не изобретение собственного велосипеда.
источник

RS

Roman Silin in pro.lua
Maxim H
Как в два по полному имени файла определить каталог в котором этот файл находится? Есть ли в lua стандартная функция для этого? Я смотрел lfs и не нашел ничего подходящего.
local path = 'folder/abc/file.jpg'

local separator = package.config:sub(1, 1)

local result = path:match('(.*' .. separator .. ')')

print(result) -- folder/abc/
источник

MH

Maxim H in pro.lua
спасибо
источник

S

Snusmumriken in pro.lua
Roman Silin
local path = 'folder/abc/file.jpg'

local separator = package.config:sub(1, 1)

local result = path:match('(.*' .. separator .. ')')

print(result) -- folder/abc/
Кстати, эксплуатация package.config — хороший тон.
источник

зк

захар который... in pro.lua
Возможно ли каким-то образом избежать «накладок» при последовательном вызове команд? Вроде очевидная задача, но проблемы возникают практически всегда.

Вот пример скрипта, и какие проблемы возникают (см. комментарии к коду):

local params = {...}
local TempDir = "tmppp/"

SysUtils.CreateDirectory(TempDir)
DC.ExecuteCommand("cm_ChangeDir", "inactivepath=%D/" .. TempDir)

-- выделить только файлы изоражений
DC.ExecuteCommand("cm_MarkPlus", "mask=*.bmp;*.jpg;*.jpeg;*.svg;*.ico;*.gif;*.png;*.tiff;*.tif;*.webp;*.svg;*.svgz;*.xcf;", "attr=d-", "casesensitive=0");
DC.ExecuteCommand("cm_MarkPlus", "mask=*.", "attr=d-", "casesensitive=0");
DC.ExecuteCommand("cm_MarkMinus", "mask=\.*");

DC.ExecuteCommand("cm_RenameNoAsk", "confirmation=no", "queueid=1");
DC.ExecuteCommand("cm_FocusSwap");
DC.ExecuteCommand("cm_MarkMarkAll");
DC.ExecuteCommand("cm_ExecuteScript", "$DC_CONFIG_PATH/scripts/autorename.lua", "%LU", "1", "-1", "image. large", "");

-- здесь скрипт пытается выполнить следующую команду (cm_MarkMarkAll) не успев выполнить переименование

DC.ExecuteCommand("cm_MarkMarkAll");
DC.ExecuteCommand("cm_RenameNoAsk", "confirmation=no", "queueid=2");
DC.ExecuteCommand("cm_FocusSwap");

-- здесь скрипт пытается удалить каталог не успев выполнить перемещение

local br, es, en
local h, d = SysUtils.FindFirst(TempDir .. SysUtils.PathDelim .. '*')
if h == nil then
 br, es, en = os.remove(TempDir)
 if br == nil then
   Dialogs.MessageBox('Error: ' .. en .. '\n' .. es, 'Delete folder', 0x0040)
 end
else
 SysUtils.FindClose(h)
 br = Dialogs.MessageBox('Temporary folder is not empty!\nDo you want to delete anyway?', 'Delete folder', 0x0001 + 0x0030)
 if br == 0x0001 then
   br, es, en = os.remove(TempDir)
   if br == nil then
     Dialogs.MessageBox('Error: ' .. en .. '\n' .. es, 'Delete folder', 0x0040)
   end
 end
end


Вижу только вариант с тем, чтобы расставлять паузы в нужных местах, но это очень сомнительный приём, к тому же объём обработки может очень сильно разниться и угадать паузу становится просто невозможно. Может быть есть какие-то решения?
источник

S

Snusmumriken in pro.lua
Только условные паузы. Оно кажись пытается асинхронно выполнять скрипты. Напиши автору DC.
источник

зк

захар который... in pro.lua
А, то есть это не типичное поведение?  Зависит от DC?
источник

S

Snusmumriken in pro.lua
Конечно.
источник

зк

захар который... in pro.lua
А, понял, оно вызывает функции DC, которые, по идее, должны возвращать сигнал завершения
источник

S

Snusmumriken in pro.lua
Все функции которые начинаются с DC — относятся к DC.
источник

MH

Maxim H in pro.lua
А что такое DC? DirectConnect?
источник

f

fgntfg in pro.lua
Doloy Capitalism
источник

зк

захар который... in pro.lua
Double Commander — файловый менеджер.  Двухпанельник.
источник

зк

захар который... in pro.lua
fgntfg
Doloy Capitalism
))) отличное название для ФМ!
источник

MH

Maxim H in pro.lua
захар который
Double Commander — файловый менеджер.  Двухпанельник.
Больше похож на midnight commander или на Far manager?
источник

S

Snusmumriken in pro.lua
SysUtils — тоже DC, как и Dialogs.
источник

зк

захар который... in pro.lua
Maxim H
Больше похож на midnight commander или на Far manager?
На Тотал коммандер больше похож.  Всё же гуй, панельки, кнопочки. Задумывался как мультиплатформенная опенсорс-альтернатива.
источник

S

Snusmumriken in pro.lua
fgntfg
Doloy Capitalism
Сначала прочитал как deploy capitalizm
источник

MH

Maxim H in pro.lua
А в реальности работает только в Windows? Или в Linux тоже работает, просто ночные сборки не собираются?
источник