[Pascal] Wyświetlanie katalogu

uses crt, dos;


var OpisPliku : SearchRec;


Begin

clrscr;


   	FindFirst('C:\*.*', AnyFile, OpisPliku); { znajdź pierwszy }

  	  	  	  	{ plik }

  	while DosError = 0 do { szukaj aż do wyczerpania plików }

  	  	begin

  	  	  	FindNext(OpisPliku); { znajdź kolejny plik }


                        writeln(OpisPliku.Name);		

  	  	end;

readln;

End.

Chciałbym aby writeln(OpisPliku.Name); wyświetlało pełną ścieżkę a nie tylko nazwę pliku, głowię się z tym juz godzinę i jakoś nie moge sobie dać rady.

procedure Files(Path:String;Recurence:Boolean);

var Sr:SearchRec;

begin

  if FindFirst(Path+'*.*',AnyFile,Sr)=0 then

  begin

    while true do

    begin

      if (faDirectory and Sr.Attr)=0 then writeln(Path+Sr.Name)

      else if (Sr.Name[1]<>'.')and(Recurence) then Files(Path+Sr.Name+'\',Recurence);

      if FindNext(Sr)<>0 then Break;

    end;

    FindClose(Sr);

  end;

end;


...

  Files('C:\',true);

Coś nie działa

Program fdsfsd;

uses crt, dos;


procedure Files(Path:String;Recurence:Boolean);

var Sr:SearchRec;

begin

  if FindFirst(Path+'*.*',AnyFile,Sr)=0 then

  begin

    while true do

    begin

      if (faDirectory and Sr.Attr)=0 then writeln(Path+Sr.Name)

      else if (Sr.Name[1]<>'.')and(Recurence) then Files(Path+Sr.Name+'\',Recurence);

      if FindNext(Sr)<>0 then Break;

    end;

    FindClose(Sr);

  end;

end;


Begin

clrscr;

  Files('C:\',true);

readln;

End.

Log błędu

Mam nieco nowszy kompilator, więc mogą być pewne problemy, z pisaniem “na sucho”.

procedure Files(Path:String;Recurence:Boolean);

var Sr:SearchRec;

begin

  FindFirst(Path+'*.*',AnyFile,Sr);

  if DosError=0 then

  begin

    while true do

    begin

      if (Directory and Sr.Attr)=0 then writeln(Path+Sr.Name)

      else if (Sr.Name[1]<>'.')and(Recurence) then Files(Path+Sr.Name+'\',Recurence);

      FindNext(Sr);

      if DosError<>0 then Break;

    end;

    FindClose(Sr);

  end;

end;

Nie jestem pewien co do Directory, ale znajdziesz w opisie FindFirst lub/oraz SearchRec.