Archived
1
0
This repository has been archived on 2025-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
pascal/SCHED.PAS
2001-11-30 12:14:44 +01:00

254 lines
5.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

program Schedule;
{ Datendatei
----------
Dateiname: [wie EXE-Datei].DAT
Format:
dd.mm. [Termin] // f<>r j„hrliche Termine
dd.mm.yy [Termin] // f<>r einmalige Termine
}
uses Crt, Dos, VFx;
const Days: array[0..6] of string[10] =
('Sonntag','Montag','Dienstag',
'Mittwoch','Donnerstag',
'Freitag','Sonnabend');
Months: array[1..12] of string[9] =
('Januar','Februar','M„rz','April',
'Mai','Juni','Juli','August','September',
'Oktober','November','Dezember');
var SD,SM,SY,SDOW: word;
datf: text;
datfn: string;
increaser: byte;
waitafter: boolean;
origmode: integer;
procedure Init; forward;
procedure Outit; forward;
procedure GetDDate(dat: string;var d,m,y: byte); forward;
function GetDDesc(dat: string): string; forward;
procedure Raise(var d,m,y: word); forward;
procedure Check4App; forward;
procedure Appointment(ter: string); forward;
procedure Init;
var i,lm: integer;
begin
CursorOff;
origmode := 0;
lm := LastMode;
if (lm<>3) then begin
origmode := lm;
TextMode(co80);
end;
increaser := 0;
waitafter := false;
GotoXY(1,WhereY-1);
ClrEol;
GetDate(SY,SM,SD,SDOW);
SY := SY - (SY DIV 100) * 100;
CWriteLn(' %%15#ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿');
CWrite('%%8#Ä%%7#Ä%%15#Ä´ %%14#Schedule/DOS%%15# ÃÄÄÄ´ ');
TextColor(7);
Write('Es ist heute ',Days[SDOW],', der ',SD,'. ',Months[SM],' ',SY,'. ');
TextColor(15);
Write('Ã');
Write(MultiChar('Ä',77-WhereX));
CWrite('%%7#ÄÄ%%8#ÄÄ');
CWrite(' %%15#ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ%%7# ');
WriteLn;
TextColor(7);
for i:=Length(ParamStr(0)) downto 1 do begin
if Copy(ParamStr(0),i,1)='.' then datfn := Copy(ParamStr(0),1,i-1)+'.dat';
end;
Assign(datf,datfn);
{$I-}
Reset(datf);
if IOResult<>0 then begin
TextColor(12+blink);
Write('þ ');
TextColor(12);
WriteLn('Fehler ',IOResult,' beim ™ffnen von ',datfn,'.');
WriteLn;
Outit;
Halt;
end;
if Eof(datf) then begin
TextColor(12+blink);
Write('þ ');
TextColor(12);
WriteLn('Datendatei ',datfn,' ist leer.');
WriteLn;
Outit;
Halt;
end;
{$I+}
end;
procedure Outit;
var i: integer;
h,m,s,hu,os: word;
li,c: byte;
begin
c := 9;
CWrite('%%8#ÄÄ%%7#ÄÄ%%15#');
if waitafter then begin
Write(MultiChar('Ä',12),'´ ');
CWrite('%%8#Bitte eine Taste dr<64>cken, oder # Sek. warten%%15#');
Write(' Ã',MultiChar('Ä',12));
end else Write(MultiChar('Ä',77-WhereX));
CWrite('%%7#ÄÄ%%8#ÄÄ');
li := WhereY-1;
if waitafter then begin
GetTime(h,m,os,hu);
while c<>0 do begin
GotoXY(50,li);
Write(c:1);
GetTime(h,m,s,hu);
if s<>os then begin
Dec(c);
Sound(1500);
Delay(50);
NoSound;
end;
os := s;
if keypressed then begin
ReadKey;
GotoXY(1,li);
CWrite('%%8#ÄÄ%%7#ÄÄ%%15#');
Write(MultiChar('Ä',72));
CWrite('%%7#ÄÄ%%8#ÄÄ');
CursorOn;
NormVideo;
if origmode<>0 then TextMode(origmode);
Halt;
end;
end;
end;
GotoXY(1,li);
CWrite('%%8#ÄÄ%%7#ÄÄ%%15#');
Write(MultiChar('Ä',72));
CWrite('%%7#ÄÄ%%8#ÄÄ');
CursorOn;
ReadyBeep;
NormVideo;
if origmode<>0 then TextMode(origmode);
Halt;
end;
procedure GetDDate(dat: string;var d,m,y: byte);
var i,co: integer;
date: string;
oldp: integer;
begin
d := 0;
m := 0;
y := 0;
oldp := 1;
for i:=1 to Length(dat) do begin
if dat[i]=' ' then begin
date := Copy(dat,1,i-1);
Break;
end;
end;
Val(Copy(date,1,2),d,co);
Val(Copy(date,4,2),m,co);
if Length(date)>6 then Val(Copy(date,7,2),y,co) else y:=0;
end;
function GetDDesc(dat: string): string;
var i: integer;
begin
for i:=1 to Length(dat) do begin
if dat[i]=' ' then begin
GetDDesc := Copy(dat,i+1,Length(dat)-i);
Break;
end;
end;
end;
procedure Raise(var d,m,y: word);
begin
Inc(d);
Inc(increaser);
case m of
1,3,5,7,8,10,12: if d>31 then begin
Inc(m);
d := 1;
end;
4,6,9,11: if d>30 then begin
Inc(m);
d := 1;
end;
2: if ((y/4=y div 4) AND (d>29)) then begin
Inc(m);
d := 1;
end else if ((y/4<>y div 4) AND (d>28)) then begin
Inc(m);
d := 1;
end;
end;
if m>12 then begin
Inc(y);
m := 1;
end;
end;
procedure Check4App;
var tmp: string;
d,m,y: byte;
i: integer;
begin
for i:=1 to 5 do begin
Reset(datf);
while NOT Eof(datf) do begin
ReadLn(datf, tmp);
case tmp[1] of
'0'..'9': begin
GetDDate(tmp,d,m,y);
{ Write('Date: ',TD,'.',TM,'.',TY,' --- ');
WriteLn('Seek for: ',d,'.',m,'.',y); }
if ((d=SD) AND (m=SM) AND ((y=SY) OR (y=0))) then Appointment(tmp);
end;
end;
end;
Raise(SD,SM,SY);
end;
end;
procedure Appointment(ter: string);
var d,m,y: byte;
begin
GetDDate(ter,d,m,y);
case increaser of
0: TextColor(12+blink);
1: TextColor(12);
2,3: TextColor(14);
4,5: TextColor(10);
end;
Write('þ ');
case increaser of
0: begin Write('-HEUTE- '); waitafter := true; end;
1: begin Write('-MORGEN- '); waitafter := true; end;
else begin
Write(d:2,'.',m:2,'.');
if y<>0 then Write(y:2,' ') else Write(' ');
end;
end;
Write('þ');
if ((increaser=0) OR (increaser=0)) then TextColor(15) else TextColor(7);
WriteLn(' ',GetDDesc(ter));
end;
begin
Init;
Check4App;
Outit;
end.