From the reference:
type TStringProc = procedure (const s: String);
procedure FindFiles (const Directory, Mask: String; MainDirFirst: Boolean; FileAction, DirAction: TStringProc); attribute (iocritical);
How you call it: findfiles(mydir,a,false,reset,nil);
mydir is of type string => matches Directory type a is of type text => doesn't match Mask type false is of type boolean => matches MainDirFirst type reset is a procedure to open file for reading, it's of type procedure (f: text) for text files => doesn't match FileAction type TStringProc (see above) nil is a pointer pointing to address 0, which is a reserved location for unallocated vars => doesn't match DirAction type TStringProc (see above)
Can you see where the mistakes are now?