Index: freexp/compdate.pas
===================================================================
RCS file: /server/cvs/freexp/compdate.pas,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- a/freexp/compdate.pas 3 May 2004 18:34:04 -0000 1.1
+++ b/freexp/compdate.pas 10 May 2004 20:43:18 -0000 1.2
@@ -6,26 +6,66 @@
{ Die Nutzungsbedingungen fuer diesen Quelltext finden Sie in der }
{ Datei SLIZENZ.TXT oder auf www.crosspoint.de/oldlicense.html. }
{ --------------------------------------------------------------- }
-{ $Id: compdate.pas,v 1.1 2004/05/03 18:34:04 mw Exp $ }
+{ $Id: compdate.pas,v 1.2 2004/05/10 20:43:18 my Exp $ }
unit compdate;
interface
const
- comp_YY:=0;
- comp_MO:=0;
- comp_DD:=0;
- comp_HH:=0;
- comp_MI:=0;
- comp_SS:=0;
+ comp_YY:='0000';
+ comp_MO:='00';
+ comp_DD:='00';
+ comp_HH:='00';
+ comp_MI:='00';
+ comp_SS:='00';
implementation
end.
{
$Log: compdate.pas,v $
+ Revision 1.2 2004/05/10 20:43:18 my
+ MY:- In Dummy-Unit 'compdate.pas' allen Konstanten vier- bzw.
+ zweistellige Strings aus Nullen zuweisen (statt Integer).
+
+ MY:- Hinweise zur Verwendung von gendate.pas/compdate.pas:
+ -----------------------------------------------------
+ 1. gendate.pas wird bei jedem via BUILD.BAT ausgel�sten
+ Compiliervorgang compiliert, anschlie�end im Source-Root
+ ausgef�hrt und erzeugt eine Unit compdate.pas, die in diversen
+ Konstanten, die beliebig zusammengesetzt werden k�nnen,
+ lediglich den Timestamp des aktuell zu erstellenden Compilats
+ enth�lt.
+ 2. Da compdate.pas in die jeweiligen Programme (XP, UUZ usw.)
+ eingebunden wird, l��t sich so der echte Compile-Timestamp
+ fest in diese Programme eincompilieren (statt wie bisher den
+ Timestamp der erzeugten EXE als Referenz nehmen zu m�ssen).
+ Damit ist gew�hrleistet, da� auch bei Ver�nderungen des
+ Timestamps der EXE (z.B. beim Entpacken oder Kopieren) das
+ Programm in den diversen Ausgaben, Versionsmeldungen usw. immer
+ den tats�chlichen Compile-Timestamp ausgibt.
+ 3. Anschlie�end werden alle zu einer Distribution geh�renden
+ Dateien auf den in compdate.pas enthaltenen Timestamp via
+ TOUCH.EXE auf denselben korrekten Compile-Timestamp gesetzt.
+ 4. Das Ganze funktioniert *nicht* bei (z.B. zu Testzwecken) �ber
+ die IDE erzeugten Compilaten. Damit diese �berhaupt erstellt
+ werden k�nnen, befindet sich im CVS-Repository ein Dummy-Unit
+ compdate.pas, die ausschlie�lich Strings aus Nullen enth�lt. Die
+ Programme, die compdate.pas benutzen, m�ssen darauf pr�fen (z.B.
+ "if comp_YY='0000'") und sollten dann wie fr�her ersatzweise den
+ Timestamp der EXE f�r die Ausgabe heranziehen.
+ GENDATE.EXE sollte daher nie h�ndisch im Source-Root ausgef�hrt
+ werden, weil es die bestehende Dummy-Unit �berschreiben und die
+ oben beschriebene Logik bei IDE-Compilaten dann nicht mehr
+ funktionieren w�rde. Ggf. sollte nach einem versehentlichen
+ Ausf�hren von GENDATE.EXE der aktuelle Stand der compdate.pas
+ neu vom CVS-Repository bezogen werden.
+ 5. BUILD.BAT hingegen sichert bei jedem Lauf den Dummy der
+ compdate.pas, um ihn am Ende des Compiliervorgangs wieder zu
+ restaurieren.
+
Revision 1.1 2004/05/03 18:34:04 mw
MW: - Neue Unit COMPDATE implementiert. Sie erlaubt in Verbindung
- mit Gendate ein 100% zuverl�ssigen Timestamp beim Compilieren.
+ mit Gendate einen 100% zuverl�ssigen Timestamp beim Compilieren.
}
Index: freexp/gendate.pas
===================================================================
RCS file: /server/cvs/freexp/gendate.pas,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- a/freexp/gendate.pas 3 May 2004 18:34:04 -0000 1.1
+++ b/freexp/gendate.pas 10 May 2004 20:43:46 -0000 1.2
@@ -6,20 +6,19 @@
{ Die Nutzungsbedingungen fuer diesen Quelltext finden Sie in der }
{ Datei SLIZENZ.TXT oder auf www.crosspoint.de/oldlicense.html. }
{ --------------------------------------------------------------- }
-{ $Id: gendate.pas,v 1.1 2004/05/03 18:34:04 mw Exp $ }
+{ $Id: gendate.pas,v 1.2 2004/05/10 20:43:46 my Exp $ }
program gendate;
-uses dos,crt;
+uses dos,crt,typeform;
var t:datetime;
hund,dow:Word;
f:text;
- s:string;
begin
Gettime(t.Hour,t.Min,t.Sec,hund);
Getdate(t.Year,t.Month,t.Day,dow);
- Assign(f,'COMPDATE.PAS');
+ Assign(f,'compdate.pas');
Rewrite(f);
writeln(f,'{ --------------------------------------------------------------- }');
writeln(f,'{ Dieser Quelltext ist urheberrechtlich geschuetzt. }');
@@ -35,18 +34,12 @@
writeln(f,'interface');
writeln(f,'');
writeln(f,'const');
- str(t.Year,s);
- writeln(f,' comp_YY:='+s+';');
- str(t.Month,s);
- writeln(f,' comp_MO:='+s+';');
- str(t.Day,s);
- writeln(f,' comp_DD:='+s+';');
- str(t.Hour,s);
- writeln(f,' comp_HH:='+s+';');
- str(t.Min,s);
- writeln(f,' comp_MI:='+s+';');
- str(t.Sec,s);
- writeln(f,' comp_SS:='+s+';');
+ writeln(f,' comp_YY:='''+strs(t.Year)+''';');
+ writeln(f,' comp_MO:='''+formi(t.Month,2)+''';');
+ writeln(f,' comp_DD:='''+formi(t.Day,2)+''';');
+ writeln(f,' comp_HH:='''+formi(t.Hour,2)+''';');
+ writeln(f,' comp_MI:='''+formi(t.Min,2)+''';');
+ writeln(f,' comp_SS:='''+formi(t.Sec,2)+''';');
writeln(f,'');
writeln(f,'implementation');
writeln(f,'');
@@ -58,8 +51,52 @@
end.
{
$Log: gendate.pas,v $
+ Revision 1.2 2004/05/10 20:43:46 my
+ MY:- Konstanten comp_MO, comp_DD, comp_HH, comp_MI und comp_SS via
+ typeform.strs() ggf. mit Nullen zu zweistelligen Zahlen auff�llen
+ und allen Konstanten in der erzeugten Unit 'compdate.pas' als
+ String zuweisen (damit in den Units, die danach compdate.pas
+ verwenden, keine Typumwandlung mehr erforderlich ist).
+ - Dateiname 'compdate.pas' jetzt klein schreiben.
+
+ MY:- Hinweise zur Verwendung von gendate.pas/compdate.pas:
+ -----------------------------------------------------
+ 1. gendate.pas wird bei jedem via BUILD.BAT ausgel�sten
+ Compiliervorgang compiliert, anschlie�end im Source-Root
+ ausgef�hrt und erzeugt eine Unit compdate.pas, die in diversen
+ Konstanten, die beliebig zusammengesetzt werden k�nnen,
+ lediglich den Timestamp des aktuell zu erstellenden Compilats
+ enth�lt.
+ 2. Da compdate.pas in die jeweiligen Programme (XP, UUZ usw.)
+ eingebunden wird, l��t sich so der echte Compile-Timestamp
+ fest in diese Programme eincompilieren (statt wie bisher den
+ Timestamp der erzeugten EXE als Referenz nehmen zu m�ssen).
+ Damit ist gew�hrleistet, da� auch bei Ver�nderungen des
+ Timestamps der EXE (z.B. beim Entpacken oder Kopieren) das
+ Programm in den diversen Ausgaben, Versionsmeldungen usw. immer
+ den tats�chlichen Compile-Timestamp ausgibt.
+ 3. Anschlie�end werden alle zu einer Distribution geh�renden
+ Dateien auf den in compdate.pas enthaltenen Timestamp via
+ TOUCH.EXE auf denselben korrekten Compile-Timestamp gesetzt.
+ 4. Das Ganze funktioniert *nicht* bei (z.B. zu Testzwecken) �ber
+ die IDE erzeugten Compilaten. Damit diese �berhaupt erstellt
+ werden k�nnen, befindet sich im CVS-Repository ein Dummy-Unit
+ compdate.pas, die ausschlie�lich Strings aus Nullen enth�lt. Die
+ Programme, die compdate.pas benutzen, m�ssen darauf pr�fen (z.B.
+ "if comp_YY='0000'") und sollten dann wie fr�her ersatzweise den
+ Timestamp der EXE f�r die Ausgabe heranziehen.
+ GENDATE.EXE sollte daher nie h�ndisch im Source-Root ausgef�hrt
+ werden, weil es die bestehende Dummy-Unit �berschreiben und die
+ oben beschriebene Logik bei IDE-Compilaten dann nicht mehr
+ funktionieren w�rde. Ggf. sollte nach einem versehentlichen
+ Ausf�hren von GENDATE.EXE der aktuelle Stand der compdate.pas
+ neu vom CVS-Repository bezogen werden.
+ 5. BUILD.BAT hingegen sichert bei jedem Lauf den Dummy der
+ compdate.pas, um ihn am Ende des Compiliervorgangs wieder zu
+ restaurieren.
+
Revision 1.1 2004/05/03 18:34:04 mw
MW: - Neue Unit COMPDATE implementiert. Sie erlaubt in Verbindung
- mit Gendate ein 100% zuverl�ssigen Timestamp beim Compilieren.
+ mit Gendate einen 100% zuverl�ssigen Timestamp beim Compilieren.
}
------------------------------------------------------------------------
FreeXP CVS-Mailingliste
[EMAIL PROTECTED]
http://www.freexp.de/cgi-bin/mailman/listinfo/cvs-list