Помощь - Поиск - Пользователи - Календарь
Полная версия: йЮЙ БШДЮРЭ ДЮРС Х БПЕЛЪ?
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
Morpheus
МСФМН ЯДЕКЮРЭ еуеУС, ОПХ МЮЯРСОЮМХХ МЮ ЙНРНПСЧ АСДЕР БШДЮБЮРЭЯЪ РЕЙСЫЮЪ ДЮРЮ Х БПЕЛЪ (ЩРН ДКЪ ГЮОХЯШБЮМХЪ Б КНЦ-ТЮИК). МЮЬЕК ХЯУНДМХЙ, НМ БШДЮЕР БПЕЛЪ МНПЛЮКЭМН, Ю БНР ДЮРС ЯВХРЮЕР ЙЮЙ Й-БН ДМЕИ ОПНЬЕДЬХИ Я ЙЮЙНЦН РН 19... ЦНДЮ. вРН МЮОХЯЮРЭ, ВРНАШ БШДЮБЮКЮЯЭ МНПЛЮКЭМЮЪ ДЮРЮ?

Код
program clock_device;

{ (w) by Sergey Top <stop@stop.karaganda.su>                                }
{ CLOCK$ is a character device which handles device requests to input and   }
{ output exactly 6 bytes. An input request should return 6 bytes indicating }
{ the current time/date and an output request should accept 6 bytes to set  }
{ the clock/calendar. The format for CLOCK$ I/O is:                         }

type
  clock = record
    date:word;  { days since Jan 1, 1980         }
    min:byte;   { current minute (0-59)          }
    hrs:byte;   { current hour (0-24)            }
    hun:byte;   { current 1/100 of second (0-99) }
    sec:byte;   { current second (0-59)          }
  end;


var
  f:file of byte;
  c:clock;
begin
  Assign(f,'CLOCK$');
  Reset(f);
  read(f,byte(c.date));
  Close(f);
  writeln(c.hrs:2,':',c.min:2,' ',c.date:6);
end.
AlaRic
Переработал 1.gif
mj
Может кто переведёт мне что тут написано?  :-/
ozzy
С устройством парень хотел поработать? Получилось, хоть?
Crait
Вот результат перевода 1-го поста.


Как выдать дату и время?    

нужно сделать ЕХЕху, при наступании на которую будет выдаваться
текущая дата и время (это для записывания в лог-файл).
нашел исходник, он выдает время нормально, а вот дату считает
как к-во дней прошедший с какого то 19... года. Что написать,
чтобы выдавалась нормальная дата?
mj
Код
uses Dos, Crt;

const
  ErrWrite='ошибка записи';
  Ok='ок';
  E: array[0..6] of string=
    ('воскресенье', 'понедельник', 'вторник',
    'среда', 'четверг', 'пятница', 'суббота');
  M: array[1..12] of string=
    ('января', 'февраля', 'марта', 'апреля',
    'мая', 'июнья', 'июля', 'августа',
    'сентября', 'октября', 'ноября', 'декабря');

var
  F: Text;
  S: SearchRec;
  P: Word;
  D: Integer;
  A: Word;
  P1, P2: String;
  Year, Month, Day, DayOfWeek: Word;
  Hour, Minute, Second, Sec100: Word;

procedure Help;
begin
  TextColor(7);
  TextBackground(0);
  ClrScr;
  TextColor(0);
  TextBackground(7);
  GotoXY(14,9);
  WriteLn('---------------------------------------------------');
  TextColor(0);
  GotoXY(14,10);
  Write('  г--------------- SAVETIME.EXE ----------------┐  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,11);
  Write('  │   Программа написана                        │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,12);
  Write('  │ Махаевым Евгением Владимировичем            │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,13);
  Write('  │ для фиксирования времяни в файле            │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,14);
  Write('  │ заданным первым параметром                  │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,15);
  Write('  │   Программа предназначена  для фиксирования │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,16);
  Write('  │ времяни включения (перезагрузки компьютера) │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,17);
  Write('  │   Если вписать перед именем файла "/D ",    │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,18);
  Write('  │ то файл удалится и время будет записано     │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,19);
  Write('  │ в пустой файл.                              │  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,20);
  Write('  L=============================================-  ');
  TextColor(8);
  WriteLn('-');
  TextColor(0);
  GotoXY(14,21);
  Write('-');
  TextColor(8);
  Write('--------------------------------------------------');
  TextColor(8);
  WriteLn('-');
  TextColor(7);
  TextBackground(0);
  Write(#10#10);
  Halt(1)
end;

begin
  P:=ParamCount;
  if (P<1) or (P>2) then Help;
  P1:=ParamStr(1);
  if P=2 then P2:=ParamStr(2) else P2:=P1;
  if (P1='/?') or (P1='?') or (P2='/?') or (P2='?') then Help;
  TextColor(7);
  TextBackground(0);
  WriteLn(#13#10#10'Загрузка программы слежения...');
  FindFirst(P2,AnyFile,S);
  D:=DosError;
  if D<>0 then S.Name:=P2;
  Assign(F,S.Name);
  if D=0 then
  begin
    WriteLn(' * чтение атрибутов - ок');
    A:=S.Attr;
    Write(' * снятие атрибутов - ');
    SetFAttr(F,Archive);
    if DosError<>0 then
    begin
      WriteLn(ErrWrite);
      Halt(2)
    end;
    WriteLn('ок');
  end else
    A:=Archive;
  if ((P1='/D') or (P1='/d')) or (D<>0) then
  begin
    if DosError<>0 then
      Write(' * создание файла - ')
    else
      Write(' * удаление и создание файла - ');
    WriteLn(Ok);
    ReWrite(F);
    WriteLn(F,'г-┐ Файл отчёта программы SAVETIME.EXE');
    Write(F,'│-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~');
  end else
  begin
    Write(' * открытие файла - ');
    Append(F);
    if DosError<>0 then
    begin
      WriteLn(ErrWrite);
      Halt(2)
    end;
    WriteLn(Ok);
  end;
  GetDate(Year,Month,Day,DayOfWeek);
  GetTime(Hour,Minute,Second,Sec100);
  Write(' * запись данных - ');
  WriteLn(F,'');
  Write(F,'│- ',Day,' ',M[Month],' ',Year,' г. ',E[DayOfWeek],', ',Hour,':');
  if Minute<10 then
    Write(F,'0');
  Write(F,Minute);
  WriteLn(Ok);
  Close(F);
  WriteLn(' * закрытие файла - ок');
  Write(' * установка атрибутов - ');
  SetFAttr(F,A);
  if DosError<>0 then
  begin
    WriteLn(ErrWrite);
    Halt(2)
  end;
  WriteLn(Ok);
  Halt(0)
end.
mj
Писал прогу давно, так что не зенаю работает сейчас или нет...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.