Buenas!
Por lo del primer problema (con la línea comentada) lo que pasa es que tienes el procedimiento en la misma unit del form, pero fuera del form.
Tienes 2 opciones:
1) En la definición del form, en la parte private, declaras el procedure, y en la implementación del procedure le pones por delante el nombre del form. Alfo así como:
[delphi]
type
TFrmPrincipal = class(TForm)
.....
private
procedure ListFileDir(Path: string; FileList: TStrings);
[delphi]
y en la implementación:
Código Delphi
[-]
procedure TFrmPrincipal.ListFileDir(Path: string; FileList: TStrings);
2) La segunda opción es declarar el procedure dentro de donde lo llamas.:
Código Delphi
[-]
procedure TFrmFxMain.SpeedButton20Click(Sender: TObject);
var xpath: tStringList;
subcarpetas : TStringList;
cFile : String;
str : string;
i: integer;
procedure ListFileDir(Path: string; FileList: TStrings);
var SR: TSearchRec;
begin
if (FindFirst(Path + '*.*', faAnyFile, SR) = 0) then begin
repeat
if (SR.Attr = faDirectory) then begin
FileList.Add(SR.Name);
end;
until (FindNext(SR) <> 0);
FindClose(SR);
end;
end;
begin
TRY
xpath := TStringList.create;
cFile := 'c:\_Fx\FileLocation.ini';
Luego te digo algo de lo otro
Edu