Hola, Estoy haciendo una aplicacion que busque los archivos y carpetas ocultas en la raiz de un disco y los desoculte, hasta ahi no tengo problema, pero también el programa debe borrar los accesos directos que encuentre, aqui es donde me está dando problema, lo estoy haciendo con la función deleteFile, pero no borra nada. Entonces quisiera que me ayudaran en que me estoy equivocando. En el form tengo un DriverComboBox1 con Name=disco y un button1.
El codigo es el siguente:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, FileCtrl, StrUtils;
type
TFPrincipal = class(TForm)
Button1: TButton;
Disco: TDriveComboBox;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
public
end;
var
FPrincipal: TFPrincipal;
implementation
{$R *.dfm}
procedure listar1( sDirectorio: string; var Resultado1: TStringList );
var
Busqueda: TSearchRec;
iResultado: Integer;
begin
iResultado := FindFirst( sDirectorio+':\'+'*.*', faAnyFile, Busqueda );
while iResultado = 0 do
begin
if (busqueda.Attr=FaDirectory+FaHidden) or (busqueda.Attr=FaHidden) then
begin
Resultado1.Add(busqueda.Name);
end;
iResultado := FindNext( Busqueda );
end;
FindClose( Busqueda );
end;
procedure listar2( sDirectorio: string; var Resultado2: TStringList );
var
Busqueda: TSearchRec;
iResultado: Integer;
begin
iResultado := FindFirst( sDirectorio+':\'+ '*.lnk', faArchive, Busqueda );
while iResultado = 0 do
begin
if busqueda.Attr=faArchive then
begin
Resultado2.Add(busqueda.Name);
end;
iResultado := FindNext( Busqueda );
end;
FindClose( Busqueda );
end;
procedure TFPrincipal.Button1Click(Sender: TObject);
var
a,b:Tstringlist;
i:integer; Unidad,x:String; Eli:Boolean;
begin
Unidad:=Disco.Drive; a:=TstringList.Create; b:=TStringList.Create;
listar1(Unidad,a); ShowMessage(a.Text);
listar2(Unidad,b); ShowMessage(b.text);
try
for i:=0 to a.InstanceSize-1 do
begin
x:=Unidad+':\'+a[i];
SetFileAttributes (PChar(x), FILE_ATTRIBUTE_NORMAL)
end;
for i:=1 to b.InstanceSize-1 do
begin
deleteFile(PChar(Unidad+':\'+b[i])); end;
except
ShowMessage('listo!');
end;
end;
end.
De antemano gracias por su ayuda.