uses dos; var f: file; name: string; c: char; ask, flag: boolean; r,w,l: word; function fe(filename: string): boolean; var f : file; begin assign(f,filename); reset(f,1); close(f); fe := (ioresult = 0) and (filename <> ''); end; begin name := ''; if paramcount > 0 then name := paramstr(1); if not fe(name) then begin write('File: '); readln(name); ask:=true; end; if name = '' then halt(0); if not fe(name) then begin writeln('File does not exist!'); halt(1); end; assign(f,name); reset(f, 1); flag := false; repeat blockread(f, c, 1, r); case c of #13: begin blockread(f, c, 1, r); l := l + 1; if flag then begin w := w + 1; flag := false; end; end; #10: begin l := l + 1; if flag then begin w := w + 1; flag := false; end; end; #32, #9: if flag then begin w := w + 1; flag := false; end; else flag := true; end; until eof(f); l := l + 1; if flag then w := w + 1; if ask then writeln('Lines/Words/Size: ',l,' ',w,' ',filesize(f)) else writeln(l,' ',w,' ',filesize(f),' ',name); end.