Re: CVS update: freexp/Homepage/forum/language/lang_ukrainian

2004-10-06 Diskussionsfäden Michael Heydekamp
Joachim Merkel [EMAIL PROTECTED] wrote on 05.10.04:

 Michael Heydekamp ([EMAIL PROTECTED]) schreibt:

 Welchen Modulnamen?
 Mein Vorschlag:
 freexp-http

 Oder freexp-web.

 freexp-site

Ist ja nicht nur die Website, sondern alles, was web-basierend ist
(Forum halt).  Na gut, ist vielleicht doch die site, weiß nicht.   
web schien mir klarer.

Aber wurscht -- Martin, nimm, was Dir gefällt. :)


Michael

FreeXP Entwickler-Mailingliste
[EMAIL PROTECTED]
http://www.freexp.de/cgi-bin/mailman/listinfo/dev-list


Re: Datum-/Zeitroutinen

2004-10-06 Diskussionsfäden Michael Heydekamp
Michael Heydekamp [EMAIL PROTECTED] wrote on 06.10.04:

[...]

 Ich hänge im Followup zu diesem Posting mal die zentralen neuen
 Routinen für das ganze Gedönse an.

Bzw. als Text geht das in diesem Falle auch:


Vor dem Schreiben des Headers jeder Nachricht Variablen mit Inhalt
füllen:
--

[...]
begin  { of WriteRFCheader }
  with hd do
  begin
msgtime:='';
msgdate:='';
msg_TZ:='';
nowdate:=date;
nowtime:=time;
now_DST:=sommer(nowdate,nowtime);
now_TZ:=iifs(now_DST,'+0200','+0100');  { Default: MEZ/MESZ }
if (length(zdatum)7) and (length(datum)5) then
begin
  { my: Ggf. Jahr bei Jahrhundertwechsel korrigieren,   }
  { damit bei Nachrichten, die als UTC-Datum in }
  { 'zdatum' noch den 31.12.1999, als lokales Datum }
  { in 'datum' aber bereits den 01.01.00 (zweistel- }
  { lige Jahreszahl!) ausweisen, nicht wie bisher   }
  { durch das blinde Kopieren der ersten beiden }
  { Ziffern der Jahreszahl aus 'zdatum' das lokale  }
  { RFC-Datum 01 Jan 1900 erzeugt wird.   }
  msgdate:=copy(datum,5,2)+'.'+copy(datum,3,2)+'.'+
   iifs(((copy(zdatum,3,2)='99') and (left(datum,2)='00')),
  strs(ival(left(zdatum,2))+1)+left(datum,2),
  left(zdatum,2)+left(datum,2));
  if (length(zdatum)13) and (length(datum)9) then
msgtime:=copy(datum,7,2)+':'+copy(datum,9,2)+':'+copy(zdatum,13,2);
  if (length(zdatum)16) and (upcase(zdatum[15]) in ['W','S']) and
 (zdatum[16] in ['+','-']) and (zdatum[17] in ['0'..'9']) then
  begin
msg_DST:=sommer(msgdate,msgtime);
p:=cpos(':',zdatum);
if p=0 then p:=byte(zdatum[0])+1;
msg_TZ:=zdatum[16]+formi(ival(copy(zdatum,17,p-17)),2)+
formi(ival(mid(zdatum,p+1)),2);
if right(msg_TZ,4)='' then{ bei TZ '' immer '+' }
  msg_TZ[1]:='+';
p:=ival(left(msg_TZ,3))+ { 'p' für Zeitzone mißbrauchen }
   iif(not msg_DST and now_DST,1,
   iif(msg_DST and not now_DST,-1,0));
now_TZ:=iifs(p0,'-','+')+formi(abs(p),2)+right(msg_TZ,2);
  end;
end;
[...]



Die Routine, die aus den obigen Variablen wahlweise RFC- oder asctime()-
Format (mit Wochentag) erzeugt:


  { - }
  { asc=false: Datums-/Zeitstring in RFC-Format umwandeln }
  {(für Date:-Header, Quelle: EDA:-Header)  }
  {(für Received:-Header, akt. Zeit)}
  {Fri, 31 Dec 1999 23:01:00 +0100  }
  {   }
  { asc=true : Datums-/Zeitstring in asctime-Format umwandeln }
  {(für From_-Zeile in UUCP-Mails, akt. Zeit)   }
  {Fri Dec 31 23:01:00 1999 }
  {   }
  { dateS= Datum im Format 31.12.1999   }
  { timeS= Zeit  im Format 23:01:00 }
  { - }

  function RFCdate(const dateS,timeS,TZ:datetimest; const asc:boolean):string;
  begin
if dateS'' then
begin
  RFCdate:=copy('MonTueWedThuFriSatSun',dow(dateS)*3-2,3)+
iifs(asc,'',', ')+
iifs(asc,'',left(dateS,2))+' '+month(copy(dateS,4,2))+
iifs(asc,iifs(dateS[1]='0',' '+copy(dateS,2,1),left(dateS,2)),
 right(dateS,4))+
iifs(timeS='','',' '+timeS)+
iifs(asc,' '+right(dateS,4),iifs(TZ='','',' '+TZ));
end
else RFCdate:='';
  end;



Und hier die Zeilen/Header, wo 'RFCdate' letztlich verwendet wird:
--


--8--
if ddatum'' then
begin
  fpar:=fpar+'modification-date='+
RFCdate(copy(ddatum,7,2)+'.'+copy(ddatum,5,2)+'.'+
left(ddatum,4),copy(ddatum,9,2)+':'+
copy(ddatum,11,2)+':'+copy(ddatum,13,2),
'-',false)+'';
  if hd.groesse0 then fpar:=fpar+'; size='+strs(hd.groesse);
end
--8--


--8--
  else wrs(f,'From '+left(s,p-1)+' '+
 RFCdate(nowdate,nowtime,now_TZ,true)+ { akt. Datum/Uhrzeit }
 ' remote from '+mid(s,p+1));
  if (wab'') and (cpos('@',oem)0) and not smtp   { (*1) - s.u. }
then rfor:=empfaenger
  else rfor:='';
  wrs(f,'Received: by '+mid(s,cpos('@',s)+1)+
iifs(programm'',' ('+programm+')','')+
iifs(rfor'',#10#9'for '+rfor+';',';'));
  wrs(f,#9+RFCdate(nowdate,nowtime,now_TZ,false)); { akt. Datum/Uhrzeit }
end
--8--


--8--
wrs(f,'Date: