diff --git a/components/fpexif/fpeexifdata.pas b/components/fpexif/fpeexifdata.pas index 523a29b4e..ad86eec78 100644 --- a/components/fpexif/fpeexifdata.pas +++ b/components/fpexif/fpeexifdata.pas @@ -1510,8 +1510,10 @@ var p: Integer; begin floatVal := GetAsFloat; - if IsNaN(floatVal) or (floatVal = 0) then + if IsNaN(floatVal) then Result := '' + else if floatVal = 0 then + Result := '(manual)' else if FFormatStr = '' then begin if floatVal >= 10 then @@ -1585,8 +1587,13 @@ var begin Result := inherited GetRational(AIndex, r); if Result then begin - dbl := r.Numerator / r.Denominator; - AValue := FloatToRational(Power(2.0, -dbl), 1E-9); + if (r.Numerator = LongInt($80000000)) then // fix for https://forum.lazarus.freepascal.org/index.php/topic,49648.msg382611.html + AValue := RATIONAL_ZERO + else + begin + dbl := r.Numerator / r.Denominator; + AValue := FloatToRational(Power(2.0, -dbl), 1E-9); + end; end; end; diff --git a/components/fpexif/fpeglobal.pas b/components/fpexif/fpeglobal.pas index c88a6f9bf..6fd2c8436 100644 --- a/components/fpexif/fpeglobal.pas +++ b/components/fpexif/fpeglobal.pas @@ -129,6 +129,8 @@ const IPTC_MULTI_TAG_COUNT = $FFFF; IPTC_MULTI_TAG_SEPARATOR = #1; + RATIONAL_ZERO: TExifRational = (Numerator:0; Denominator:1); + var fpExifDataSep : ansistring = ', '; fpExifDecodeSep : string = ',';