PDA

Ver la Versión Completa : problema con aplicación para consola


spab
17-06-2005, 16:20:52
:confused:
Tengo el siguiente problema, estoy intentando hacer con delphi un ejecutable para pasarle parámetros desde la consola; pero me dice que una de las funciones que utilizo esta redeclarada. ¿Alguien me puede ayudar? :)





program Limpieza;

{$APPTYPE CONSOLE}

uses
SysUtils, Messages, Variants, Classes, Controls,
Dialogs, StdCtrls;
function FindFile(const filespec: TFileName; attributes: integer = faReadOnly Or faHidden Or faSysFile Or faArchive): TStringList;

var lista: TStringList;

begin
{ TODO -oUser -cConsole Main : Insert code here }

lista := FindFile('c:\borrame\')//ParamStr(1)+'*.*');
if lista.Count=0 then ShowMessage('¡No existen ficheros!');

end;


function FindFile(const filespec: TFileName; attributes: integer): TStringList;
var
spec: string;
list: TStringList;

procedure RFindFile(const folder: TFileName);
var lista: TStringList;
SearchRec: TSearchRec;
begin
// Busca todos los archivos concordantes
// en la carpeta actual y agrega sus nombres
// a la lista
if FindFirst(folder + spec, attributes,
SearchRec) = 0 then begin
try
repeat
if (SearchRec.Attr and faDirectory = 0)
or (SearchRec.Name <> '.')
and (SearchRec.Name <> '..') then
list.Add(folder + SearchRec.Name);
if FileDateToDateTime(SearchRec.time) < (Now-3) then
DeleteFile(folder + SearchRec.Name);
until FindNext(SearchRec) <> 0;
except
FindClose(SearchRec);
raise;
end;
FindClose(SearchRec);
end;
// Ahora busca en las subcarpetas
if FindFirst(folder + '*', attributes
Or faDirectory, SearchRec) = 0 then begin
try
repeat
if ((SearchRec.Attr and faDirectory) <> 0) and
(SearchRec.Name <> '.') and(SearchRec.Name <> '..') then
RFindFile(folder + SearchRec.Name + '\');
until FindNext(SearchRec) <> 0;
except
FindClose(SearchRec);
raise;
end;
FindClose(SearchRec);
end;
end; // procedure RFindFile dentro de FindFile

begin // function FindFile
list := TStringList.Create;
try
spec := ExtractFileName(filespec);
RFindFile(ExtractFilePath(filespec));
Result := list;
except
list.Free;
raise;
end;
end;

end.

delphi.com.ar
17-06-2005, 16:31:41
Como estas trabajando en el DPR no tienes una parte de interface y otra de implementación y estas queriendo declarar la función FindFile en las primeras líneas. Simplemente quita esta supuesta declaración, porque el compilador toma como que hay dos funciones FindFile.

Saludos!

delphi.com.ar
17-06-2005, 16:36:42
Por otro lado al no haber implementación, solo podrás ejecutar las funciones que han sido escritas previamente a la llamada. O sea que vas a tener que mover FindFile arriba del punto de entrada de la aplicación, o ponerla en una unit plana.

Saludos!

jachguate
17-06-2005, 17:44:27
También podes usar (supongo que aún es válida) la sentencia forward existente desde los viejos días de pascal (creo que desde el 1 o 2 :D)

Hasta luego.

;)

delphi.com.ar
17-06-2005, 17:48:41
De todos modos hay un detalle... la función no puede ir debajo del "end."... asi que sí o si va a ser visible de donde se llama ;)

spab
20-06-2005, 11:25:51
Muchas gracias !!