Hola a todos
Estoy intentando usar una forma de copiar archivos que sirvan incluso para archivos grandes con lua puro. Primero lo hice para un solo archivo luego modifiqué el script para copiar multiples archivos desde una carpetas con subcarpetas y archivos en ellos. El problema es que me da error en un dialogo que dice:
"Error attempt to index local "flnHandle" (a nil value)
Stack traceback:
1:[Page1-->Button1-->OnClick] Line: 46 in main chunk
Este es el codigo que estoy usando:
Parece ser que funciona como una tabla, pero como accedo a ella? o como lo resuelvo?
Estoy intentando usar una forma de copiar archivos que sirvan incluso para archivos grandes con lua puro. Primero lo hice para un solo archivo luego modifiqué el script para copiar multiples archivos desde una carpetas con subcarpetas y archivos en ellos. El problema es que me da error en un dialogo que dice:
"Error attempt to index local "flnHandle" (a nil value)
Stack traceback:
1:[Page1-->Button1-->OnClick] Line: 46 in main chunk
Este es el codigo que estoy usando:
Código: Seleccionar todo
local source = Dialog.FolderBrowse("", _SourceFolder);
if source ~= "CANCEL" then
sFolderpath = Dialog.FolderBrowse("Please select a destination:", _DesktopFolder);
strSource = File.Find(source.."\\", "*.*", true, true, nil, nil);
for xd, data in pairs (strSource) do
tPathparts = String.SplitPath(data);
sFilename = tPathparts.Filename .. tPathparts.Extension;
if sFolderpath ~= "CANCEL" then
local destination = sFolderpath .. "\\" .. sFilename;
local BUFSIZE = 2^14;
local fInHandle = io.open(data, "rb");
local fOutHandle = io.open(destination, "wb");
local size = File.GetSize(data);
local blocks = Math.Floor(size / BUFSIZE);
local remainder = size - (blocks * BUFSIZE);
StatusDlg.Show();
StatusDlg.SetMeterRange(0, 1000);
StatusDlg.SetMeterPos(0);
StatusDlg.SetMessage(data);
start = os.time();
for i = 1, blocks do
data = fInHandle:read(BUFSIZE);
fOutHandle:write(data);
pos = 1000 * i * BUFSIZE / size;
StatusDlg.SetMeterPos(pos);
x = string.format("%0.1f%% copied", pos/10);
StatusDlg.SetStatusText(x);
end
if (remainder > 0) then
data = fInHandle:read(remainder);
fOutHandle:write(data);
end
[b][color=#BF0000]fInHandle:close();[/color][/b]
fOutHandle:close();
stop = os.time();
StatusDlg.Hide();
Label.SetText("results_of", "Results of: Test 2");
Input.SetText("file_size", "File size: " .. size .. " bytes");
Input.SetText("copy_time", "Lua I/O took " .. (stop-start) .. " seconds");
end
end
end