Tìm kiếm file và folder bằng ngôn ngữ Pascal
Số trang: 8
Loại file: pdf
Dung lượng: 159.68 KB
Lượt xem: 11
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Thủ tục FindFirst procedure FindFirst(Path: PChar; Attr: Word; var F: TSearchRec); Trong đó: + Path có kiểu PChar (kiểu con trỏ đến một chuỗi) nhưng ở đây bạn có thể truyền vào một chuỗi kiểu string, ví dụ: bạn cần tìm tất cả các file đuôi .exe trong thư mục C:Windows thì bạn cần truyền vào chuỗi sau: ‘C:Windows*.exe’ + Attr là thuộc tính của file/folder được định sẵn bằng các hằng trong thư viện DOS:...
Nội dung trích xuất từ tài liệu:
Tìm kiếm file và folder bằng ngôn ngữ Pascal Tìm kiếm file và folder bằng ngôn ngữ PascalThủ tục FindFirstprocedure FindFirst(Path: PChar; Attr: Word; var F: TSearchRec);Trong đó:+ Path có kiểu PChar (kiểu con trỏ đến một chuỗi) nhưng ở đây bạn có thể truyềnvào một chuỗi kiểu string, ví dụ: bạn cần tìm tất cả các file đuôi .exe trong thư mụcC:Windows thì bạn cần truyền vào chuỗi sau: ‘C:Windows*.exe’+ Attr là thuộc tính của file/folder được định sẵn bằng các hằng trong thư việnDOS:Hằng Giá trịReadOnly $01Hidden $02SysFile $04VolumeID $08Directory $10Archive $20AnyFile $3F+ F là tham biến kiểu TSearchRec chứa kết quả tìm được, TSearchRec là kiểurecord được định nghĩa như sau:type TSearchRec = record Fill: array[1..21] of Byte; Attr: Byte; Time: Longint; Size: Longint; Name: array[0..12] of Char; end;Thủ tục FindNext:procedure FindNext(var F: TSearchRec);Trong đó biến F chứa thông tin phục vụ cho việc tiếp tục tìm kiếm theo thủ tụcFindFirst đã gọi trước đó.Nếu tìm kiếm thất bại thì biến DosError sẽ được mang giá trị khác 0 như sau: Mã Nghĩa Không tìm thấy file 2 Không tìm thấy đường 3 dẫn Truy cập bị cấm 5 18 Đã tìm hếtChương trình minh họa: liệt kê tất cả các file .PAS trong thư mục hiện hành.USES Dos;VARDirInfo: SearchRec;BEGINFindFirst(*.PAS, AnyFile, DirInfo); { Same as DIR *.PAS }WHILE DosError = 0 DOBEGIN Writeln(DirInfo.Name); FindNext(DirInfo);END;readln;END.Chương trình liệt kê tất cả các file trong máy tính bằng cách sử dụng 2 thủtục trên cùng với một Stack. Lưu ý: chỉ chạy tốt với Free Pascal, trên TurboPascal chương trình bị lỗi khi gặp đường dẫn thư mục quá dài.USES Dos, crt;TYPE pNode = ^Node; Node = RECORD s: STRING; pNext: pNode; END;VAR pHead: pNode; {Con tro den dau stack} found: SearchRec; drive: CHAR; findPath: STRING; count: LONGINT; fo: TEXT;PROCEDURE InitStack;BEGIN pHead:=NIL;END;FUNCTION isStackEmpty: BOOLEAN;BEGIN isStackEmpty:= (pHead = NIL);END;PROCEDURE Pop(VAR s:STRING);VAR tmp: pNode;BEGIN s:=pHead^.s; tmp:=pHead; pHead:=pHead^.pNext; dispose(tmp);END;PROCEDURE Push(s:STRING);VAR tmp:pNode;BEGIN new(tmp); tmp^.s:=s; tmp^.pNext:=pHead; pHead:=tmp;END;BEGINassign(fo,AllFiles.txt); rewrite(fo);InitStack;count:=0;{Them tat ca cac o dia tu A den Z vao stack}FOR drive:=z DOWNTO a DO Push(drive + :);writeln(Ready to listing, while listing you can press any key to stop);writeln(Press Enter...);readln;WHILE NOT isStackEmpty DOBEGINpop(findPath);FindFirst(findPath + *.*, AnyFile, found);IF DosError 0 THEN continue;inc(count);writeln(count);IF KeyPressed THEN break;writeln(fo, findPath);WHILE DosError = 0 DOBEGIN IF found.Attr AND Directory 0 THEN BEGIN IF (found.Name.) AND (found.Name..) THEN Push(findPath + + found.Name) END ELSE BEGIN inc(count); Writeln(fo, findpath + + found.Name); END; FindNext(found); END; END; writeln(fo, There are ,count, files and folders in this computer!); close(fo); writeln(Done!); writeln(There are ,count, files and folders in this computer!); readln;END.
Nội dung trích xuất từ tài liệu:
Tìm kiếm file và folder bằng ngôn ngữ Pascal Tìm kiếm file và folder bằng ngôn ngữ PascalThủ tục FindFirstprocedure FindFirst(Path: PChar; Attr: Word; var F: TSearchRec);Trong đó:+ Path có kiểu PChar (kiểu con trỏ đến một chuỗi) nhưng ở đây bạn có thể truyềnvào một chuỗi kiểu string, ví dụ: bạn cần tìm tất cả các file đuôi .exe trong thư mụcC:Windows thì bạn cần truyền vào chuỗi sau: ‘C:Windows*.exe’+ Attr là thuộc tính của file/folder được định sẵn bằng các hằng trong thư việnDOS:Hằng Giá trịReadOnly $01Hidden $02SysFile $04VolumeID $08Directory $10Archive $20AnyFile $3F+ F là tham biến kiểu TSearchRec chứa kết quả tìm được, TSearchRec là kiểurecord được định nghĩa như sau:type TSearchRec = record Fill: array[1..21] of Byte; Attr: Byte; Time: Longint; Size: Longint; Name: array[0..12] of Char; end;Thủ tục FindNext:procedure FindNext(var F: TSearchRec);Trong đó biến F chứa thông tin phục vụ cho việc tiếp tục tìm kiếm theo thủ tụcFindFirst đã gọi trước đó.Nếu tìm kiếm thất bại thì biến DosError sẽ được mang giá trị khác 0 như sau: Mã Nghĩa Không tìm thấy file 2 Không tìm thấy đường 3 dẫn Truy cập bị cấm 5 18 Đã tìm hếtChương trình minh họa: liệt kê tất cả các file .PAS trong thư mục hiện hành.USES Dos;VARDirInfo: SearchRec;BEGINFindFirst(*.PAS, AnyFile, DirInfo); { Same as DIR *.PAS }WHILE DosError = 0 DOBEGIN Writeln(DirInfo.Name); FindNext(DirInfo);END;readln;END.Chương trình liệt kê tất cả các file trong máy tính bằng cách sử dụng 2 thủtục trên cùng với một Stack. Lưu ý: chỉ chạy tốt với Free Pascal, trên TurboPascal chương trình bị lỗi khi gặp đường dẫn thư mục quá dài.USES Dos, crt;TYPE pNode = ^Node; Node = RECORD s: STRING; pNext: pNode; END;VAR pHead: pNode; {Con tro den dau stack} found: SearchRec; drive: CHAR; findPath: STRING; count: LONGINT; fo: TEXT;PROCEDURE InitStack;BEGIN pHead:=NIL;END;FUNCTION isStackEmpty: BOOLEAN;BEGIN isStackEmpty:= (pHead = NIL);END;PROCEDURE Pop(VAR s:STRING);VAR tmp: pNode;BEGIN s:=pHead^.s; tmp:=pHead; pHead:=pHead^.pNext; dispose(tmp);END;PROCEDURE Push(s:STRING);VAR tmp:pNode;BEGIN new(tmp); tmp^.s:=s; tmp^.pNext:=pHead; pHead:=tmp;END;BEGINassign(fo,AllFiles.txt); rewrite(fo);InitStack;count:=0;{Them tat ca cac o dia tu A den Z vao stack}FOR drive:=z DOWNTO a DO Push(drive + :);writeln(Ready to listing, while listing you can press any key to stop);writeln(Press Enter...);readln;WHILE NOT isStackEmpty DOBEGINpop(findPath);FindFirst(findPath + *.*, AnyFile, found);IF DosError 0 THEN continue;inc(count);writeln(count);IF KeyPressed THEN break;writeln(fo, findPath);WHILE DosError = 0 DOBEGIN IF found.Attr AND Directory 0 THEN BEGIN IF (found.Name.) AND (found.Name..) THEN Push(findPath + + found.Name) END ELSE BEGIN inc(count); Writeln(fo, findpath + + found.Name); END; FindNext(found); END; END; writeln(fo, There are ,count, files and folders in this computer!); close(fo); writeln(Done!); writeln(There are ,count, files and folders in this computer!); readln;END.
Tìm kiếm theo từ khóa liên quan:
Công nghệ thông tin cấu trúc dữ liệu lý thuyết đồ thị Javascript ASP.NET Tin học đại cương giáo trình Tin học đại cương bài giảng Tin học đại cương tài liệu Tin học đại cương lý thuyết Tin học đại cươngGợi ý tài liệu liên quan:
-
52 trang 431 1 0
-
Top 10 mẹo 'đơn giản nhưng hữu ích' trong nhiếp ảnh
11 trang 317 0 0 -
Đề cương chi tiết học phần Cấu trúc dữ liệu và giải thuật (Data structures and algorithms)
10 trang 317 0 0 -
74 trang 302 0 0
-
Ứng dụng công cụ Quizizz thiết kế trò chơi học tập trong giảng dạy học phần tin học đại cương
12 trang 301 0 0 -
96 trang 293 0 0
-
Báo cáo thực tập thực tế: Nghiên cứu và xây dựng website bằng Wordpress
24 trang 289 0 0 -
Đồ án tốt nghiệp: Xây dựng ứng dụng di động android quản lý khách hàng cắt tóc
81 trang 281 0 0 -
EBay - Internet và câu chuyện thần kỳ: Phần 1
143 trang 276 0 0 -
Tài liệu dạy học môn Tin học trong chương trình đào tạo trình độ cao đẳng
348 trang 269 1 0