From: Marcel B. <jed...@us...> - 2002-11-30 14:57:45
|
Update of /cvsroot/jvcl/jvcl/source In directory sc8-pr-cvs1:/tmp/cvs-serv9233/jvcl/source Modified Files: JvSchedEvtStore.pas Log Message: * Bug in restoring frequency from text stream * Added separate timestamp.date and timestamp.time writing/reading for text streams. These methods are now also used for frequency storage. Index: JvSchedEvtStore.pas =================================================================== RCS file: /cvsroot/jvcl/jvcl/source/JvSchedEvtStore.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** JvSchedEvtStore.pas 30 Nov 2002 14:06:17 -0000 1.1 --- JvSchedEvtStore.pas 30 Nov 2002 14:57:42 -0000 1.2 *************** *** 1033,1041 **** procedure ReadSet(const AName: string; out Value; const TypeInfo: PTypeInfo); function ReadStamp(const AName: string): TTimeStamp; ! procedure WriteEnum(const AName: string; const Ordinal: Integer; const TypeInfo: PTypeInfo); procedure WriteInt(const AName: string; const Value: Int64); procedure WriteSet(const AName: string; const Value; const TypeInfo: PTypeInfo); procedure WriteStamp(const AName: string; const Stamp: TTimeStamp); public function GetAttributes: TSchedEvtStoreAttributes; override; --- 1033,1045 ---- procedure ReadSet(const AName: string; out Value; const TypeInfo: PTypeInfo); function ReadStamp(const AName: string): TTimeStamp; ! function ReadStampDate(const AName: string): Integer; ! function ReadStampTime(const AName: string): Integer; ! procedure WriteEnum(const AName: string; const Ordinal: Integer; const TypeInfo: PTypeInfo); procedure WriteInt(const AName: string; const Value: Int64); procedure WriteSet(const AName: string; const Value; const TypeInfo: PTypeInfo); procedure WriteStamp(const AName: string; const Stamp: TTimeStamp); + procedure WriteStampDate(const AName: string; const Date: Integer); + procedure WriteStampTime(const AName: string; const Time: Integer); public function GetAttributes: TSchedEvtStoreAttributes; override; *************** *** 1101,1115 **** procedure TTxtStore.RestoreFreqStart; begin ! (Event.Schedule as IJclScheduleDayFrequency).StartTime := ReadInt(TxtIdentifiers[seikFreqStart]); end; procedure TTxtStore.RestoreFreqEnd; begin ! (Event.Schedule as IJclScheduleDayFrequency).EndTime := ReadInt(TxtIdentifiers[seikFreqEnd]); end; procedure TTxtStore.RestoreFreqInterval; begin ! (Event.Schedule as IJclScheduleDayFrequency).StartTime := ReadInt(TxtIdentifiers[seikFreqInterval]); end; --- 1105,1119 ---- procedure TTxtStore.RestoreFreqStart; begin ! (Event.Schedule as IJclScheduleDayFrequency).StartTime := ReadStampTime(TxtIdentifiers[seikFreqStart]); end; procedure TTxtStore.RestoreFreqEnd; begin ! (Event.Schedule as IJclScheduleDayFrequency).EndTime := ReadStampTime(TxtIdentifiers[seikFreqEnd]); end; procedure TTxtStore.RestoreFreqInterval; begin ! (Event.Schedule as IJclScheduleDayFrequency).Interval := ReadStampTime(TxtIdentifiers[seikFreqInterval]); end; *************** *** 1217,1231 **** procedure TTxtStore.StoreFreqStart; begin ! WriteInt(TxtIdentifiers[seikFreqStart], (Event.Schedule as IJclScheduleDayFrequency).StartTime); end; procedure TTxtStore.StoreFreqEnd; begin ! WriteInt(TxtIdentifiers[seikFreqEnd], (Event.Schedule as IJclScheduleDayFrequency).EndTime); end; procedure TTxtStore.StoreFreqInterval; begin ! WriteInt(TxtIdentifiers[seikFreqInterval], (Event.Schedule as IJclScheduleDayFrequency).Interval); end; --- 1221,1235 ---- procedure TTxtStore.StoreFreqStart; begin ! WriteStampTime(TxtIdentifiers[seikFreqStart], (Event.Schedule as IJclScheduleDayFrequency).StartTime); end; procedure TTxtStore.StoreFreqEnd; begin ! WriteStampTime(TxtIdentifiers[seikFreqEnd], (Event.Schedule as IJclScheduleDayFrequency).EndTime); end; procedure TTxtStore.StoreFreqInterval; begin ! WriteStampTime(TxtIdentifiers[seikFreqInterval], (Event.Schedule as IJclScheduleDayFrequency).Interval); end; *************** *** 1464,1467 **** --- 1468,1477 ---- function TTxtStore.ReadStamp(const AName: string): TTimeStamp; + begin + Result.Date := ReadStampDate(AName + '.Date'); + Result.Time := ReadStampTime(AName + '.Time'); + end; + + function TTxtStore.ReadStampDate(const AName: string): Integer; var ItemName: string; *************** *** 1470,1492 **** M: Word; D: Word; - H: Word; - Min: Word; - MSecs: Integer; begin Value := ReadItem(ItemName); ! if not AnsiSameText(AName + '.Date', ItemName) then raise EJVCLException.Create('Incorrect identifier found.'); Y := StrToInt(Copy(Value, 1, 4)); M := StrToInt(Copy(Value, 6, 2)); D := StrToInt(Copy(Value, 9, 2)); ! Result := DateTimeToTimeStamp(EncodeDate(Y, M, D)); Value := ReadItem(ItemName); ! if not AnsiSameText(AName + '.Time', ItemName) then raise EJVCLException.Create('Incorrect identifier found.'); ! H := StrToInt(Copy(Value, 1, 2)); ! Min := StrToInt(Copy(Value, 4, 2)); ! MSecs := StrToInt(Copy(Value, 7, 2)) * 1000 + StrToInt(Copy(Value, 10, 3)); ! Result.Time := H * 3600000 + MIn * 60000 + MSecs; end; --- 1480,1513 ---- M: Word; D: Word; begin Value := ReadItem(ItemName); ! if not AnsiSameText(AName, ItemName) then raise EJVCLException.Create('Incorrect identifier found.'); Y := StrToInt(Copy(Value, 1, 4)); M := StrToInt(Copy(Value, 6, 2)); D := StrToInt(Copy(Value, 9, 2)); ! Result := DateTimeToTimeStamp(EncodeDate(Y, M, D)).Date; ! end; + function TTxtStore.ReadStampTime(const AName: string): Integer; + var + ItemName: string; + Value: string; + H: Word; + Min: Word; + MSecs: Integer; + begin Value := ReadItem(ItemName); ! if not AnsiSameText(AName, ItemName) then raise EJVCLException.Create('Incorrect identifier found.'); ! if (Length(Value) < 3) or (Value[3] in ['0' .. '9']) then ! Result := StrToInt(Value) ! else ! begin ! H := StrToInt(Copy(Value, 1, 2)); ! Min := StrToInt(Copy(Value, 4, 2)); ! MSecs := StrToInt(Copy(Value, 7, 2)) * 1000 + StrToInt(Copy(Value, 10, 3)); ! Result := H * 3600000 + MIn * 60000 + MSecs; ! end; end; *************** *** 1507,1527 **** procedure TTxtStore.WriteStamp(const AName: string; const Stamp: TTimeStamp); var TmpDate: TDateTime; Y: Word; M: Word; D: Word; - MSecs: Integer; begin ! TmpDate := TimeStampToDateTime(Stamp); DecodeDate(TmpDate, Y, M, D); ! MSecs := Stamp.Time; ! WriteLn(AName + '.Date = ' + Format('%.4d/%.2d/%.2d', [Y, M, D])); ! WriteLn(AName + '.Time = ' + Format( '%.2d:%.2d:%.2d.%.3d', ! [(MSecs div 3600000) mod 24, ! (MSecs div 60000) mod 60, ! (MSecs div 1000) mod 60, ! MSecs mod 1000])); end; --- 1528,1559 ---- procedure TTxtStore.WriteStamp(const AName: string; const Stamp: TTimeStamp); + begin + WriteStampDate(AName + '.Date', Stamp.Date); + WriteStampTime(AName + '.Time', Stamp.Time); + end; + + procedure TTxtStore.WriteStampDate(const AName: string; const Date: Integer); var + TmpStamp: TTimeStamp; TmpDate: TDateTime; Y: Word; M: Word; D: Word; begin ! TmpStamp.Date := Date; ! TmpStamp.Time := 0; ! TmpDate := TimeStampToDateTime(TmpStamp); DecodeDate(TmpDate, Y, M, D); ! WriteLn(AName + ' = ' + Format('%.4d/%.2d/%.2d', [Y, M, D])); ! end; ! ! procedure TTxtStore.WriteStampTime(const AName: string; const Time: Integer); ! begin ! WriteLn(AName + ' = ' + Format( '%.2d:%.2d:%.2d.%.3d', ! [(Time div 3600000) mod 24, ! (Time div 60000) mod 60, ! (Time div 1000) mod 60, ! Time mod 1000])); end; |