Переменная DosError
Переменная DosError используется многими программами в модуле Dos для указания ошибок. var DosError: Integer; Значение, возвращаемое в DosError, представляет собой код ошибки операционной системы. Значение 0 означает «нет ошибки», другие коды означают:
ЗАДАНИЕ Напишите программу, производящую сканирование диска, определение его размера, объема свободного пространства, вывод списка файлов по заданному шаблону, поиск указанного файла и его переименование. Program Find_Ren_File; uses Dos, Crt; var Fil: File of byte; FileInfo: SearchRec; H, M, S, Hund: word; {переменные ч, мин, с, 0.01 с для GetTime} Ftime: longint; {упакованные время и дата в GetFTime} T: DateTime; {распакованные дата и время в переменной типа DateTime} Dir_s, N, E, Name, New_Name: string; I, P: integer; function LeadingZero (W: Word): string; {преобразовать время в строку var S: string; begin Str (W: 0, s); If Length (S)=1 then S: =’0’+S; LeadingZero: =S; end; procedure Nam_Ext_File; {отделить имя и расширение файла} begin P: =Pos (‘.’, FileInfo, Name); {определить позицию символа «.» в имени файла} if P> 1 then begin N: =Copy (FileInfo. Name, 1, P-1); E: =Copy (FileInfo. Name, P+1, 3); end else {расширение отсутствует} begin N: =FileInfo. Name; E: =’ ‘; end; end; procedure Rename_File; {переименовать файл} begin write (‘Введите новое имя файла: ’); readln (New_Name); rename (Fil, New_Name); writeln (‘Файл’, Name, ‘переименован в’, New_Name, ‘, нажмите Enter…’); readln; end; begin {основная программа} ClrScr; GetTime (H, M, S, Hund); {прочитать системное время} Writeln (‘Текущее время: ‘, LeadingZero (H), ‘: ’, LeadingZero (M), ‘: ’, LeadingZero (S)); GetDir (0, Dir_s); {0=читать каталог текущего диска} Writeln (DiskSize (0) div 1024, ‘Кбайт на диске’); Writeln (DiscFree(0) div 1024, ‘Кбайт свободно’); Writeln; I: =0; {пока не найдено ни одного файла} FindFirst (‘*.pas’, Archive, FileInfo); Writeln (‘Имя файла Размер (байт) Дата Время создания’); Writeln; while DosError=0 do {пока поиск файла завершается успешно} begin I: =I+1; {найден еще один файл} Assign (Fil, FileInfo. Name); Nam_Ext_File; {отделить имя файла от расширения} Write (N, ‘ ‘: 9 – Length (N), E, ‘ ‘: 4 – Length (E)); Write (‘ ‘, FileInfo. Size: 8); GetFTime (Fil, Ftime); {возвратить дату и время последнего изменения файла} UnpackTime (FileInfo. Time, T); {преобразует 4-байтовые, упакованные в Longint время и дату в распакованную запись типа DateTime} Write (‘ ‘, T. Day: 2, ‘-‘, T. Month: 2, ‘-‘, T. Year: 4); Writeln (‘ ‘, T. Hour: 2, ‘: ’, T. Min: 2, ‘: ’, T. Sec: 2); FindNext (FileInfo); end; writeln; writeln (‘В текущем каталоге найдено’, I, ‘архивных файлов с расширением.PAS’); repeat write (‘Введите имя файла для переименования > ’); readln (Name); {искать файл в каталогах, описанных в переменной окружения PATH} if Fsearch (Name, GetEnv (‘PATH’))=’ ‘ then writeln (‘на диске нет файла’, Name); until Fsearch (Name, GetEnv (‘PATH’)) < < @062> ‘ ‘; {найден файл Name} Assign (Fil, Name); Rename_File; {вызов процедуры переименования файла} end.
|