Ver Mensaje Individual
  #7  
Antiguo 10-05-2011
WPascal WPascal is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 26
Reputación: 0
WPascal Va por buen camino
Hola Ecfisa, cogí una parte del código que me recomendaste y lo metí en el segundo procedure listar2 y ya me resultó.
El codigo quedó así:

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
    { Private declarations }
  public
    { Public declarations }
  end;
var
  FPrincipal: TFPrincipal;
implementation
{$R *.dfm}
procedure listar1( sDirectorio: string; var Resultado1: TStringList );
//hay que especificar el directorio y crear el stringlist
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{  (busqueda.Attr=FaDirectory) }
      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
      if UpperCase(ExtractFileExt(Busqueda.name)) = '.LNK' then
      DeleteFile(sDirectorio+':\' + 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);
  listar2(Unidad,b);

  try
  for i:=0 to a.InstanceSize-1 do
  begin
    x:=Unidad+':\'+a[i];
    SetFileAttributes (PChar(x), FILE_ATTRIBUTE_NORMAL)
  end;
  except
    ShowMessage('listo!');
  end;
  a.Free; b.Free;
end;
end.

La verdad es que me salió de suerte pues apenas estoy empezando a aprender el manejo de archivos.
Gracias nuevamente Ecfisa por tus efectivas soluciones.
Saludos y que estés bien.
Responder Con Cita