program Pointer2; uses dos; { Esta version del programa en realidad no utiliza los punteros, sino muestra como es el mecanismo para, recursivamente, pasar por los directorios, y subdirectorios } var nivel: integer; linea: integer; procedure Muestra(S: string); var I: integer; begin for I := 1 to Nivel do write(' '); writeln(S); inc(linea); if (linea mod 20) = 0 then readln; end; procedure Directorio(dir: string); var sr: SearchRec; begin inc(Nivel); Muestra('Entro en el directorio ' + dir); ChDir(dir); FindFirst('*.*', AnyFile, sr); while (DosError = 0) do begin { Controlar el tipo de archivo } if (Directory and sr.Attr) <> 0 then begin { Esto es un directorio } if (sr.name <> '..') and (sr.name <> '.') then Directorio(sr.name); end else begin { Otros tipos de archivos } Muestra(sr.name); end; FindNext(sr); end; Muestra('Salgo del directorio ' + dir); ChDir('..'); dec(Nivel); end; begin nivel := 0; linea := 0; Directorio('c:\windows'); end.