function _PdfDateToDateTime(const AText: TPdfDate): TDateTime;
var Y,M,D, H,MI,SS: cardinal;
begin
if Length(AText)<16 then
EConvertError.CreateRes(@SDateEncodeError);
Y := ord(AText[3])1000+ord(AText[4])100+ord(AText[5])10+ord(AText[6])
-(48+480+4800+48000);
M := ord(AText[7])10+ord(AText[8])-(48+480);
D := ord(AText[9])10+ord(AText[10])-(48+480);
result := EncodeDate(Y,M,D);
H := ord(AText[11])10+ord(AText[12])-(48+480);
MI := ord(AText[13])10+ord(AText[14])-(48+480);
SS := ord(AText[15])10+ord(AText[16])-(48+480);
if (H<24) and (MI<60) and (SS<60) then // inlined EncodeTime()
result := result + (H (MinsPerHour SecsPerMin MSecsPerSec) +
MI (SecsPerMin MSecsPerSec) + SS MSecsPerSec) / MSecsPerDay else
EConvertError.CreateRes(@SDateEncodeError);
end;
Raise is missing .
correct code:
function _PdfDateToDateTime(const AText: TPdfDate): TDateTime;
var Y,M,D, H,MI,SS: cardinal;
begin
if Length(AText)<16 then
raise EConvertError.CreateRes(@SDateEncodeError);
Y := ord(AText[3])1000+ord(AText[4])100+ord(AText[5])10+ord(AText[6])
-(48+480+4800+48000);
M := ord(AText[7])10+ord(AText[8])-(48+480);
D := ord(AText[9])10+ord(AText[10])-(48+480);
result := EncodeDate(Y,M,D);
H := ord(AText[11])10+ord(AText[12])-(48+480);
MI := ord(AText[13])10+ord(AText[14])-(48+480);
SS := ord(AText[15])10+ord(AText[16])-(48+480);
if (H<24) and (MI<60) and (SS<60) then // inlined EncodeTime()
result := result + (H (MinsPerHour SecsPerMin MSecsPerSec) +
MI (SecsPerMin MSecsPerSec) + SS MSecsPerSec) / MSecsPerDay else
raise EConvertError.CreateRes(@SDateEncodeError);
end;
in method :
function _PdfDateToDateTime(const AText: TPdfDate): TDateTime; var Y,M,D, H,MI,SS: cardinal; begin if Length(AText)<16 then EConvertError.CreateRes(@SDateEncodeError); Y := ord(AText[3])1000+ord(AText[4])100+ord(AText[5])10+ord(AText[6]) -(48+480+4800+48000); M := ord(AText[7])10+ord(AText[8])-(48+480); D := ord(AText[9])10+ord(AText[10])-(48+480); result := EncodeDate(Y,M,D); H := ord(AText[11])10+ord(AText[12])-(48+480); MI := ord(AText[13])10+ord(AText[14])-(48+480); SS := ord(AText[15])10+ord(AText[16])-(48+480); if (H<24) and (MI<60) and (SS<60) then // inlined EncodeTime() result := result + (H (MinsPerHour SecsPerMin MSecsPerSec) + MI (SecsPerMin MSecsPerSec) + SS MSecsPerSec) / MSecsPerDay else EConvertError.CreateRes(@SDateEncodeError); end;
Raise is missing .
correct code:
function _PdfDateToDateTime(const AText: TPdfDate): TDateTime; var Y,M,D, H,MI,SS: cardinal; begin if Length(AText)<16 then raise EConvertError.CreateRes(@SDateEncodeError); Y := ord(AText[3])1000+ord(AText[4])100+ord(AText[5])10+ord(AText[6]) -(48+480+4800+48000); M := ord(AText[7])10+ord(AText[8])-(48+480); D := ord(AText[9])10+ord(AText[10])-(48+480); result := EncodeDate(Y,M,D); H := ord(AText[11])10+ord(AText[12])-(48+480); MI := ord(AText[13])10+ord(AText[14])-(48+480); SS := ord(AText[15])10+ord(AText[16])-(48+480); if (H<24) and (MI<60) and (SS<60) then // inlined EncodeTime() result := result + (H (MinsPerHour SecsPerMin MSecsPerSec) + MI (SecsPerMin MSecsPerSec) + SS MSecsPerSec) / MSecsPerDay else raise EConvertError.CreateRes(@SDateEncodeError); end;