123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- Program GetDate;
- { GetDate v1.0 1995 by Andreas Tetzl }
- { Public Domain }
- {
- Translated to fpc pascal
- 19 Mar 2001.
- [email protected]
- }
- uses amigados, strings;
- const template : pchar = 'Format/K,Help/S';
- version : pchar = '$VER: GetDate 1.0 (21.2.95)';
- VAR DS : tDateStamp;
- DT : _tDateTime;
- rda : pRDArgs;
- WeekDay, Date, Time, hours, mins, secs, day, month, year : pchar;
- vec : Array[0..1] of longint;
- i : longint;
- LFormat : pchar;
- Procedure PrintFormat;
- VAR Str : string;
- tmp : string;
- Begin
- Str := strpas(LFormat);
- tmp := '';
- For i:=1 to length(Str) do
- begin
- If Str[i]='%' then
- Begin
- Case UpCase(Str[i+1]) of
- ('D') : tmp := tmp + strpas(Date);
- ('W') : tmp := tmp + strpas(WeekDay);
- ('T') : tmp := tmp + strpas(Time);
- ('H') : tmp := tmp + strpas(hours);
- ('M') : tmp := tmp + strpas(Mins);
- ('S') : tmp := tmp + strpas(Secs);
- ('A') : tmp := tmp + strpas(Day);
- ('O') : tmp := tmp + strpas(Month);
- ('Y') : tmp := tmp + strpas(Year);
- end;
- end
- else
- tmp := tmp + Str[i];
- end;
- Writeln(tmp);
- end;
- Procedure Help;
- Begin
- Writeln(#10'GetDate v1.0 1995 by Andreas Tetzl');
- Writeln('Public Domain'#10);
- Writeln('How to use the placeholders for Format:'#10);
- Writeln(' %d : Datum');
- Writeln(' %w : Weekday');
- Writeln(' %t : Time with Hour, Minutes and Seconds');
- Writeln(' %h : Hour');
- Writeln(' %m : Minutes');
- Writeln(' %s : Seconds');
- Writeln(' %a : Day');
- Writeln(' %o : Month');
- Writeln(' %y : Year'#10);
- Exit;
- end;
- begin
- For i:=0 to 1 do Vec[i]:=0;
- rda:=ReadArgs(Template,@vec,NIL);
- If rda=NIL then
- Begin
- If PrintFault(IoErr,NIL) then;
- halt(10);
- end;
- LFormat:=StrAlloc(100);
- If StrComp(pointer(vec[0]),pchar('')) <> 0 then StrCopy(LFormat,pointer(vec[0])) else LFormat:=NIL;
- If vec[1]<>0 then Help;
- WeekDay:=StrAlloc(LEN_DATSTRING);
- Date:=StrAlloc(LEN_DATSTRING);
- Time:=StrAlloc(LEN_DATSTRING);
- Hours:=StrAlloc(10);
- Mins:=StrAlloc(10);
- Secs:=StrAlloc(10);
- Day:=StrAlloc(10);
- Month:=StrAlloc(10);
- Year:=StrAlloc(10);
- DateStamp(pDateStamp(@DS));
- DT.dat_Stamp:=DS;
- DT.dat_Format:=Format_DOS;
- DT.dat_StrDay:=WeekDay;
- DT.dat_StrDate:=Date;
- DT.dat_StrTime:=Time;
- If DOSDateToStr(@DT) then begin
- StrlCopy(hours,Time,2);
- StrlCopy(Mins,addr(Time[3]),2);
- StrlCopy(Secs,addr(Time[6]),2);
- StrlCopy(Day,Date,2);
- StrlCopy(Month,addr(Date[3]),3);
- StrlCopy(Year,addr(Date[7]),2);
- { In den deutschen Locale-Strings von OS3.0 scheint ein Fehler zu sein. }
- { Am Datums-String ist hinten noch ein Leerzeichen, also '16-Feb-95 '. }
- { Hier wird geprüft, ob das letzte Zeichen ein Leerzeichen ist. }
- { Das Leerzeichen wird dann durch '\0' (Stringende) ersetzt. }
- If Date[StrLen(Date)-1]=' ' then Date[StrLen(Date)-1]:=#0;
- end;
- If LFormat=NIL then
- Writeln(WeekDay,' ',Date,' ',Time)
- else
- PrintFormat;
- StrDispose(LFormat);
- StrDispose(WeekDay);
- StrDispose(date);
- StrDispose(Time);
- StrDispose(hours);
- StrDispose(mins);
- StrDispose(secs);
- StrDispose(Day);
- StrDispose(Month);
- StrDispose(Year);
- end.
|