Eliminar carpeta?

Aquí puedes preguntar o compartir tus dudas y conocimientos acerca del programa
Pues bien esta es mi pequeña pero gran duda :). Yo lo que tengo es un proyecto que, extrae al darle al botón unos archivos, pero a mucha gente le ha dado errores porque ya tenían archivos anteriores y quiero que antes de extraer elimine esa carpeta para que cuando extraiga este totalmente virgen, y si puede ser que en la progresa bar, salga que esta haciendo, por ejemplo eliminando folder/ja.zip .No se si me explico pero si no sabéis lo que digo avisadme, Muchas Gracias de Antemano, GodanRaptor!

Bueno aqui tienes algo simple:
function Folder.DeleteTreeEx(dir, callback)
    if Folder.DoesExist(dir) then
    StatusDlg.Show(MB_ICONNONE, false);

        dir = String.TrimRight(dir, "\\");
        File.Delete(dir.."\\*.*", true, false, true, callback);
        if (Application.GetLastError() == 0) then
            Folder.Delete(dir);
        end
    end
    StatusDlg.Hide();

end
result = Dialog.FolderBrowse("Please select a folder:", "AutoPlay\\Docs");
Folder.DeleteTreeEx(result, nil)
dir lo borrara solo si existe.

rafaxplayer escribió:Bueno aqui tienes algo simple:
function Folder.DeleteTreeEx(dir, callback)
    if Folder.DoesExist(dir) then
    StatusDlg.Show(MB_ICONNONE, false);

        dir = String.TrimRight(dir, "\\");
        File.Delete(dir.."\\*.*", true, false, true, callback);
        if (Application.GetLastError() == 0) then
            Folder.Delete(dir);
        end
    end
    StatusDlg.Hide();

end
result = Dialog.FolderBrowse("Please select a folder:", "AutoPlay\\Docs");
Folder.DeleteTreeEx(result, nil)
dir lo borrara solo si existe.
no me funciona... Siento mi ignorancia, pero no se como enlazar funciones para que haga una detras de otra, en mi caso. Primero borrar y una vez borrado extraer. Te paso mi codigo de extración.
function callback(strpath , percent, status)
Progress.SetCurrentPos("Progress1",percent);
Progress.SetText("Progress1", percent.." %");
Label.SetText("Progress1", strpath);
end

path =Shell.GetFolder(SHF_APPLICATIONDATA);
Zip.Extract("AutoPlay\\Docs\\.minecraft.zip", {"*.*"}, path, true, true, "", ZIP_OVERWRITE_ALWAYS, callback);
Dialog.Message("Terminado","Gracias", MB_OK, MB_ICONINFORMATION);
Sabrias como puedo poner lo de eliminar la carpeta antes?

GodanRaptor escribió:
rafaxplayer escribió:Bueno aqui tienes algo simple:
function Folder.DeleteTreeEx(dir, callback)
    if Folder.DoesExist(dir) then
    StatusDlg.Show(MB_ICONNONE, false);

        dir = String.TrimRight(dir, "\\");
        File.Delete(dir.."\\*.*", true, false, true, callback);
        if (Application.GetLastError() == 0) then
            Folder.Delete(dir);
        end
    end
    StatusDlg.Hide();

end
result = Dialog.FolderBrowse("Please select a folder:", "AutoPlay\\Docs");
Folder.DeleteTreeEx(result, nil)
dir lo borrara solo si existe.
no me funciona... Siento mi ignorancia, pero no se como enlazar funciones para que haga una detras de otra, en mi caso. Primero borrar y una vez borrado extraer. Te paso mi codigo de extración.
function callback(strpath , percent, status)
Progress.SetCurrentPos("Progress1",percent);
Progress.SetText("Progress1", percent.." %");
Label.SetText("Progress1", strpath);
end

path =Shell.GetFolder(SHF_APPLICATIONDATA);
Zip.Extract("AutoPlay\\Docs\\.minecraft.zip", {"*.*"}, path, true, true, "", ZIP_OVERWRITE_ALWAYS, callback);
Dialog.Message("Terminado","Gracias", MB_OK, MB_ICONINFORMATION);
Sabrias como puedo poner lo de eliminar la carpeta antes?
Y si puede ser el proceso en una progress bar

Algunas cosas no están del todo bien... por ejemplo el callback, y los valores que retorna...

Aquí te dejo el código y un ejemplo....
function CallbackDTE(sSrcFile, nDelBytes, nTotBytes)
	Progress.SetRange("Progress1", 0, nTotBytes);
	Progress.SetCurrentPos("Progress1", nDelBytes);
	nPercentage = Math.Floor(nDelBytes / nTotBytes * 100);
	Progress.SetText("Progress1", nPercentage.." %");
	if nDelBytes > nTotBytes then
		return false;
	else
		return true;
	end
end

function Folder.DeleteTreeEx(folderpath, callback)
    if Folder.DoesExist(folderpath) then
        dir = String.TrimRight(folderpath, "\\");
        File.Delete(folderpath.."\\*.*", true, false, true, callback);
        if (Application.GetLastError() == 0) then
            Folder.Delete(folderpath);
        end
    end
end

result = Dialog.FolderBrowse("Please select a folder:", "AutoPlay\\Docs");
if result ~= "CANCEL" then
	Folder.DeleteTreeEx(result, CallbackDTE);
end
Ejemplo:
HIDE: ON
Hidebb Message Hidden Description

Ceone escribió:Algunas cosas no están del todo bien... por ejemplo el callback, y los valores que retorna...

Aquí te dejo el código y un ejemplo....
function CallbackDTE(sSrcFile, nDelBytes, nTotBytes)
	Progress.SetRange("Progress1", 0, nTotBytes);
	Progress.SetCurrentPos("Progress1", nDelBytes);
	nPercentage = Math.Floor(nDelBytes / nTotBytes * 100);
	Progress.SetText("Progress1", nPercentage.." %");
	if nDelBytes > nTotBytes then
		return false;
	else
		return true;
	end
end

function Folder.DeleteTreeEx(folderpath, callback)
    if Folder.DoesExist(folderpath) then
        dir = String.TrimRight(folderpath, "\\");
        File.Delete(folderpath.."\\*.*", true, false, true, callback);
        if (Application.GetLastError() == 0) then
            Folder.Delete(folderpath);
        end
    end
end

result = Dialog.FolderBrowse("Please select a folder:", "AutoPlay\\Docs");
if result ~= "CANCEL" then
	Folder.DeleteTreeEx(result, CallbackDTE);
end
Ejemplo:
HIDE: ON
Hidebb Message Hidden Description
Bien esto funciona a la perfección, pero aqui mi problema, no pedia exactamente esto xD. No me explique bien creo. Lo que necesito es borrar la carpeta fotos, es una rata de %appdata%, funciona a la perfección con esto,
path =Shell.GetFolder(SHF_APPLICATIONDATA).."\\fotos";
Folder.DeleteTree(path, callback);
end
pero como pongo la pogress bar? Puse el codigo anterior pero sustituyendo por mi codigo y dejando lo de la progress bar, pero no funciona, lo elimina pero sin progreso. Una vez eliminado, automaticamente empieza el proceso
function callback(strpath , percent, status)
Progress.SetCurrentPos("Progress1",percent);
Progress.SetText("Progress1", percent.." %");
Label.SetText("Progress1", strpath);
end

path =Shell.GetFolder(SHF_APPLICATIONDATA);
Zip.Extract("AutoPlay\\Docs\\.minecraft.zip", {"*.*"}, path, true, true, "", ZIP_OVERWRITE_ALWAYS, callback);
Dialog.Message("Terminado","Gracias", MB_OK, MB_ICONINFORMATION);
Como puedo poner las dos procesos en la misma progressbar seguidamente?
Gracias por contestar

Ceone escribió:Algunas cosas no están del todo bien... por ejemplo el callback, y los valores que retorna...

Aquí te dejo el código y un ejemplo....
function CallbackDTE(sSrcFile, nDelBytes, nTotBytes)
	Progress.SetRange("Progress1", 0, nTotBytes);
	Progress.SetCurrentPos("Progress1", nDelBytes);
	nPercentage = Math.Floor(nDelBytes / nTotBytes * 100);
	Progress.SetText("Progress1", nPercentage.." %");
	if nDelBytes > nTotBytes then
		return false;
	else
		return true;
	end
end

function Folder.DeleteTreeEx(folderpath, callback)
    if Folder.DoesExist(folderpath) then
        dir = String.TrimRight(folderpath, "\\");
        File.Delete(folderpath.."\\*.*", true, false, true, callback);
        if (Application.GetLastError() == 0) then
            Folder.Delete(folderpath);
        end
    end
end

result = Dialog.FolderBrowse("Please select a folder:", "AutoPlay\\Docs");
if result ~= "CANCEL" then
	Folder.DeleteTreeEx(result, CallbackDTE);
end
Ejemplo:
HIDE: ON
Hidebb Message Hidden Description
Bien esto funciona a la perfección, pero aqui mi problema, no pedia exactamente esto xD. No me explique bien creo. Lo que necesito es borrar la carpeta fotos, es una rata de %appdata%, funciona a la perfección con esto,
path =Shell.GetFolder(SHF_APPLICATIONDATA).."\\fotos";
Folder.DeleteTree(path, callback);
end
pero como pongo la pogress bar? Puse el codigo anterior pero sustituyendo por mi codigo y dejando lo de la progress bar, pero no funciona, lo elimina pero sin progreso. Una vez eliminado, automaticamente empieza el proceso
function callback(strpath , percent, status)
Progress.SetCurrentPos("Progress1",percent);
Progress.SetText("Progress1", percent.." %");
Label.SetText("Progress1", strpath);
end

path =Shell.GetFolder(SHF_APPLICATIONDATA);
Zip.Extract("AutoPlay\\Docs\\.minecraft.zip", {"*.*"}, path, true, true, "", ZIP_OVERWRITE_ALWAYS, callback);
Dialog.Message("Terminado","Gracias", MB_OK, MB_ICONINFORMATION);
Como puedo poner las dos procesos en la misma progressbar seguidamente?
Gracias por contestar

gracias
asuos2004 Gracias

Gracias

:pc: ...

Gracias

Observando

___ :pc:

Gracias Ceone
Estoy muy interesado en estao, gracias
Gracias :)