Практика программирования (Бейсик, Си, Паскаль)


         

с помощью системной процедуры UnpackTime,


Совет 5 (Паскаль)

Распаковка даты и времени осуществляется с помощью системной процедуры UnpackTime, первым аргументом которой является упакованный набор, возвращаемый процедурами поиска, а вторым — запись с распакованными полями типа DateTime, описанная в модуле Dos. Для придания единообразия колонкам с числовыми данными полезно малые (k < 10) числа дней, месяцев, часов, минут и секунд предварять лидирующим нулем. В случае необходимости такая добавка выполняется функцией Zero.

Программа 7_08.bas

SHELL "dir *.bas" END

Программа 7_08.с

#include <stdio.h>
#include <conio.h>
#include <dir.h>
#include <dos.h>

main() {

struct ffblk sr;
int k,nf=0;
long lf=0;
struct tim
{

unsigned sec:5;
unsigned min:6;
unsigned hour:5;
};
struct dat {

unsigned day:5;
unsigned month:4;
unsigned year:7;
};

union {struct tim a;
unsigned b;}u;
union {struct dat c;
unsigned d; }v;
clrscr();

printf("Имя файла Длина Дата Время");
k=findfirst("*.c",&sr,FA_ARCH);
while (k==0) {

u.b=sr.ff_ftime; v.d=sr.ff_fdate; nf++;

lf+= sr.ff_fsize;

printf("\n%12s %61d ",sr.ff_name,sr.ff_fsize) ;
printf(" %02d/%02d/%4d ",v.c.day,v.c.month,1980+v.c.year);

printf(" %02d:%02d",u.a.hour, u.a.min);
k=findnext(Ssr); }

printf("\n%d файлов занимают %ld байт",nf,If);
getch(); }

Программа 7_08.pas

program dir;
uses Crt,Dos; var

dt:DateTime;
sr:SearchRec;
const

nf:integer=0;
If:longint=0;

function Zero(k:byte):string;
var

s: string;
begin

Str(k,s);

if k>9 then Zero:=s else Zero:= '0 '+s; end;
begin clrscr;

writeln('Имя файла Длина Дата Врекя');
FindFirst('*.pas',AnyFile,sr);
while DosError=0 do
begin with sr,dt do
begin inc(nf);
If:=lf+Size;
UnpackTime(Time, dt);
write (Name:12, ' ',Size:6, ' ');

write(Zero(Day), '/',Zero(Month), '/',Year:4, ' ');
writeln(Zero(Hour), ': ',Zero(Min), ': ',Zero (Sec)); end;

FindNext(sr); end;

writeln(nf, ' файлов занимают ',1f, ' байт');

Содержание  Назад  Вперед