Hola a todos
Estoy bloqueado en un codigo que estoy haciendo para el file delete con doble progress. En un progress lleva la funcion callback por defecto para la funcion file.delete. y funciona ok, el segundo progress tiene otro codigo que trata de mostrar el estado actual en megabytes de peso de la carpeta donde se encuentran los archivos a borrar.
El problema no se si es de tipo matematico ( yo no soy bueno en matematicas :/ ) o de tipo asignacion de variables, porque al arrancar el codigo en tiempo real me los borra, se ejecuta el progress 1 que es el que va asociado su codigo el callback del file.delete, pero no hace nada el segundo progress se queda parado hasta que sale directamente al 100 %. Esto ocurre cuando el progress 1 llega al 100 % de su borrado.
Codigo para que lo veais:
En global function poner este callback
En el evento onclick del boton esto:
Estoy bloqueado en un codigo que estoy haciendo para el file delete con doble progress. En un progress lleva la funcion callback por defecto para la funcion file.delete. y funciona ok, el segundo progress tiene otro codigo que trata de mostrar el estado actual en megabytes de peso de la carpeta donde se encuentran los archivos a borrar.
El problema no se si es de tipo matematico ( yo no soy bueno en matematicas :/ ) o de tipo asignacion de variables, porque al arrancar el codigo en tiempo real me los borra, se ejecuta el progress 1 que es el que va asociado su codigo el callback del file.delete, pero no hace nada el segundo progress se queda parado hasta que sale directamente al 100 %. Esto ocurre cuando el progress 1 llega al 100 % de su borrado.
Codigo para que lo veais:
En global function poner este callback
function DeleteProgress(Source, Deleted, Total)
-- Set the file name
SplitDest = String.SplitPath(Source);
soloExt = SplitDest.Extension;
soloFile = SplitDest.Filename;
soloFolder = SplitDest.Folder;
stConcat = String.Concat(soloFile, soloExt);
-- Update progress1
nTotalPercentage = Math.Floor(Deleted / Total * 100);
Progress.SetCurrentPos("Progress1", nTotalPercentage);
--SetString = "Borrando archivo "..soloFile.." a "..nTotalPercentage .." %";
Progress.SetText("Progress1", "Borrado al "..nTotalPercentage.." %");
Label.SetText("Label1", "Borrando archivo "..stConcat);
if Deleted > Total then
return false;
else
return true;
end
end
-- OPERACION 1: ESCOGER CARPETA A BORRAR ARCHIVOS
FOLDER = Dialog.FolderBrowse("Please select a folder:", "AutoPlay\\Docs");
nTotalperc = 0;
-- OPERACION 2: BUSCAR TODOS LOS ARCHIVOS CONTENIDOS EN ESA CARPETA
found = File.Find(FOLDER, "*.*", true, true, nil);
if found ~=-1 then
--=======
-- OPERACION 3: CREAR LISTADO DE ARCHIVOS ENCONTRADOS
for index, datos in pairs (found) do
TextFile.WriteFromString(_DesktopFolder.."\\found.txt", datos.."\r\n", true);--meto una lista de archivos encontrados
end
-- OPERACION 4: UNA VEZ CREADA LA LISTA, MIRO ARCHIVO POR ARCHIVO...
tblOld = TextFile.ReadToTable(_DesktopFolder.."\\found.txt");
-- OPERACION 5: CALCULO TAMAÑO TOTAL DE LA CARPETA EN MEGABYTES
totalsize = 0;--Antes que nada declaro primero una variable numerica para ejecutar un contador a 0 por defecto
for i, foundData in pairs (found) do
totalsize = totalsize + File.GetSize(found[i]);--sumo el valor de la carpeta con el total de cada archivo.
end
totalsize = Math.Floor(totalsize/1024000);--resultado del total de todos los archivos en carpeta
-- OPERACION 6: ANTES DE QUE SE ME BORRE EL ARCHIVO LOCAL MIDO SU PESO...
filesize = 0;--Declaro una variable numerica para ejecutar un contador a 0 por defecto, esta solo mostrara el restante en MB a borrar
for j, borrables in pairs (tblOld) do
filesize = totalsize - File.GetSize(tblOld[j]);
end
filesize = Math.Floor(filesize/1024000);--resultado de los MB restantes pendientes de ser borrados
-- OPERACION 7: CREO LA FORMULA FINAL Y OBTENGO EL PORCENTAJE DE BORRADO TOTAL CONTANDO LOS ARCHIVOS QUE QUEDAN Y LOS ORIGINALES...
-------------- ESTA FORMULA SE MUESTRA EN EL OBJETO PROGRESS 2
nTotalperc = Math.Floor((filesize/totalsize)*100);--resultado del total en MB a borrar
--=======
else
Dialog.TimedMessage("Error!", "No hay archivos que borrar, carpeta inexistente o vacia", 2000, MB_ICONINFORMATION);
Application.ExitScript();
end
----
if FOLDER ~= "" and FOLDER ~= CANCEL then
File.Delete(FOLDER.."\\*.*", false, false, false, DeleteProgress);
--
Progress.SetStep("Progress2", 0);--inicializo el progreso de la operacion desde 0
Progress.SetRange("Progress2", 1, 100);--pongo el total de recorrido en porcentaje hasta el 100%
Progress.SetCurrentPos("Progress2", nTotalPerc); --SE METE EL PORCENTAJE OBTENIDO EN LA BARRA DE PROGRESO 2
Progress.SetText("Progress2", "Total en megabytes "..filesize.." pendientes de borrar al "..nTotalperc.." %");--LO METO EN LA BARRA DE PROGRESO 2.
Progress.StepIt("Progress2");
--
if File.Find(FOLDER, "*.*", false, false, nil, nil)== nil then
Progress.SetText("Progress1", "Borrado total Terminado!");
Progress.SetText("Progress2", "Borrado completo!");
Label.SetText("Label1", "Borrado Terminado!");
Progress.SetCurrentPos("Progress1", 100);
Progress.SetCurrentPos("Progress2", 100);
end
else
Application.ExitScript();
end
----