fpexif: Prepare for compilation with Delphi. Fix crash with Nikon images.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@7327 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2020-02-17 18:52:45 +00:00
parent fa4f0c306e
commit 9779c4beba
17 changed files with 95 additions and 130 deletions

View File

@ -366,103 +366,28 @@ object MainForm: TMainForm
left = 89 left = 89
top = 118 top = 118
Bitmap = { Bitmap = {
4C690300000010000000100000000000000000000000D49A5B65E7BC8EB3E7BD 4C7A0300000010000000100000009E0200000000000078DAEDD6DD4F52611CC0
90B5E7BD90B5E7BD90B5E7BD90B5E7BD90B5E7BD90B5E7BD90B5E7BD90B5E7BC 712EBAE80FE81FE81FE8A69BAE9A372D7BD1B5B979916B6B8A446B85DA666CCE
8EB3DCA06466000000000000000000000000BF804008EFCDA7EEFEF0DFFFFEF0 CD772D9962A69989180A0A238929948C7CD9508CE1128F0738BC132442CA8B66
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 4672CE13CF71C7BC28E141B76E7CB6EFF68C9D0F637BCEEF1C58ACFDB5DA5F52
DFFFF3D4B1F2BF8040080000000000000000CD8C4B33F9E0C4F8FEF0DFFFFEF0 1ED2774C843E0A354796BEC635C4E6B00EAD99BABCB3B1A5D12815F7826CDA5E
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 556F41C3F825C18D8B499FE167B67E2F684AADF4155F663CD6779B47463090AD
DFFFFBE4CAFCD298563E0000000000000000D3985A6FFDEAD3FFFEF0DFFFFEF0 A7366C8090DCAF67BCFBED93512AEEC9DEA70B681A558C5FD30BE7512C6CC3D0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 6F627CCC34E240F58965A58FF1DBF8C406AADF217489F4199CF9D45E70FE97CF
DFFFFEECD7FFD9A269810000000000000000DDAD77A7FEF0DEFFFEF0DFFFFEF0 B08BEAD367B067ED2DB984BFBAC321C32B00D5C3337048B835FEF19AD754CC83
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 EED37DD134CBDDD207621257805CF2282A254E49F90069EE0341651588EB9BE9
DFFFFEF0DFFFE3B583AF0000000000000000E6BC90C5FEF0DFFFFEF0DFFFFEF0 E07E67AE1DACABF974700F3F83D791980C50DE197AEF1EE1CA186F12DC049FBB
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 8BE8E0DED2530CCC1D857470BFD4798B36946F16801F9B079E10973EA7BF3787
DFFFFEF0DFFFECC49ACA0000000000000000EFCAA4DAFEF0DFFFFEF0DFFFFEF0 1C43EC978B4FAFB108F1DD17F077A0C4D8E32E5C545A6815DF6BFB13BB16DE57
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 D97AE768E500E5D202A6945DBDEB92554C2EB45CADC894A1E5CA7542FA48179E
DFFFFEF0DFFFF1D0ACE00000000000000000F3D5B3ECFEF0DFFFFEF0DFFFFEF0 ED06074D7781A0AE13C4AD531923E4D501D778AD3D977B0FE679D7E83BF5A7FE
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 381E1FE434D9A43C632E41CBFACFEB24E63FB9AA0471633F5DCCD09BC445650B
DFFFFEF0DFFFF5D9BAF1BF804004C98B4D21FAE0C4F7FEF0DFFFFEF0DFFFFEF0 99667FB13DFF02E3C3733D20E1B720651BAB361EF67F5BC9AD6FFFF4D8201737
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 B6E6E7313E62D182C8B2E6A0904909C226F991CF1F97BAC10D7DE0431B88621A
DFFFFEF0DFFFFBE4CAFBD6965B38D5995D66FDE9D2FFFEF0DFFFFEF0DFFFFEF0 F4F7DF94F03DF4FEC926905CB3207BA7AA61187A8FBA0ED992513720C61E0BA0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 F74DB622FB1D8F81B40D571541FF75BA1BD9AF1B25DFCD82827384F4E19BF0FC
DFFFFEF0DFFFFEECD7FFDAA2687BE1AE7B9BFEEFDEFFFEF0DFFFFEF0DFFFFEF0 20B2F76A9F45E0F9DBA53CEDB6631AD9BB54F5F4FF2FEB306F25B5E940F60E05
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0 1FDF9F1F363F97D9C744ECB29398DFDF7A8BC172
DFFFFEF0DFFFFEF0DFFFE2B585A9DDA56B9FFDD5AAFFFDD5AAFFFDD5AAFFFDD5
AAFFFDD5AAFFFDD5AAFFFDD5AAFFFDD5AAFFFDD5AAFFFDD5AAFFFDD5AAFFFDD5
AAFFFDD5AAFFFDD5AAFFDEAA71A2DBA2659CFDCC98FFE4AC72FFF0BC85FFF0BC
85FFE4AC72FFF5C18BFFE8B178FFE8B178FFF5C18BFFE4AC72FFFDCC98FFFDD3
A6FFFEDFBFFFFDCC98FFDDA468A6DBA2659CFDCC98FFCA8C4CFFCF9353FFCF93
53FFCA8C4CFFD19556FFCC8E4EFFCC8E4EFFD19556FFCD8F50FFFDCC98FFFEE0
C0FFFFF6EDFFFDCC98FFDDA468A6D99F6292FDCC98FFFDCC98FFFDCC98FFFDCC
98FFFDCC98FFFDCC98FFFDCC98FFFDCC98FFFDCC98FFFDCC98FFFDCC98FFFDCC
98FFFDCC98FFFDCC98FFDAA06497C8894900D99F6094DBA2659CDBA2659CDBA2
659CDBA2659CDBA2659CDBA2659CDBA2659CDBA2659CDBA2659CDBA2659CDBA2
659CDBA2659CDAA06497C8894900000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000D59D624ED69F6788D69F6788D69F6788D69F
647DBF8040040000000000000000000000000000000000000000000000000000
0000000000000000000000000000DBA7719CFEDCB6FFFEDCB6FFFEDCB6FFFCD8
B1F7DCA670B4C6864770C6864770C6864770C6864770C6864770C6864770C686
4770C6864770C6864770C486454AD9A56EBAE9C093FFE9C093FFE9C093FFE9BE
91FFE4BA8FFFF0D6B9FFF0D6B9FFF0D6B9FFF0D6B9FFF0D6B9FFF0D6B9FFF0D6
B9FFF0D6B9FFF0D6B9FFD9A976E3DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0DCAE7DD8FEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDEB083E0D59E6684D7A56FC7D7A56FC7D7A56FC7D7A5
6FC7D7A56FC7D7A56FC7D7A56FC7D7A56FC7D7A56FC7D7A56FC7D7A56FC7D7A5
6FC7D7A56FC7D7A56FC7D59E6684000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000D59D624ED69F6788D69F6788D69F6788D69F
647DBF8040040000000000000000000000000000000000000000000000000000
0000000000000000000000000000DBA7719CF9D4ACFFF0C79AFFF0C79AFFEFC4
96F9D59D63C6C6864770C6864770C6864770C6864770C6864770C6864770C686
4770C6864770C88B482E00000000DBA7719CE9C195FFF1E1D1FFF1E1D1FFF1E1
D1FFF1E1D1FFF1E1D1FFF1E1D1FFF1E1D1FFF1E1D1FFF1E1D1FFF1E1D1FFF1E1
D1FFF1E1D1FFD7A876C700000000DBA7719CE9C195FFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFF9F2EBFFF1E1D1FFF1E1D1FFF1E1D1FFF1E1D1FFF1E1
D1FFF1E1D1FFD39E68D5C7874840DBA7719CE9C195FFEAD1B6FFEAD0B5FFEAD0
B5FFEAD0B5FFE7CAACFFE9CAA9FFF0D6B9FFF0D6B9FFF0D6B9FFF0D6B9FFF0D6
B9FFF0D6B9FFF0D6B9FFDCB182DDDBA7719CE3B888FFEED3B5FFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFE2B990B7DBA7719CE1B484FFF9E6D1FFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFDBAF82A3DBA7719CDEB180FFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFDEEDDFFD9A8738CDBA7719CE0B487FFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFF5DEC4FDD7A37253DBA7719CE5BE93FFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFE8C7A2F4CC8C4D14D9A56DA1E9C59EFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFDFB68AEA00000000D8A56FB6F3DABEFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFDCAF81E000000000D6A36FD2FCEDDAFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0DFFFFEF0
DFFFFEF0DFFFDAAA78D500000000D59D6478D7A56FC7D7A56FC7D7A56FC7D7A5
6FC7D7A56FC7D7A56FC7D7A56FC7D7A56FC7D7A56FC7D7A56FC7D7A56FC7D7A5
6FC7D7A56FC7D39D646300000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000
} }
end end
end end

View File

@ -59,6 +59,7 @@ type
FImgInfo: TImgInfo; FImgInfo: TImgInfo;
FImageLoaded: Boolean; FImageLoaded: Boolean;
FImageOrientation: TExifOrientation; FImageOrientation: TExifOrientation;
FFileName: String;
procedure LoadFile(const AFileName: String); procedure LoadFile(const AFileName: String);
procedure LoadFromIni; procedure LoadFromIni;
procedure SaveToIni; procedure SaveToIni;
@ -250,6 +251,7 @@ var
crs: TCursor; crs: TCursor;
begin begin
FImageLoaded := false; FImageLoaded := false;
FFileName := AFileName;
Image.Picture.Clear; Image.Picture.Clear;
TagListView.Items.BeginUpdate; TagListView.Items.BeginUpdate;
@ -427,8 +429,8 @@ begin
crs := Screen.Cursor; crs := Screen.Cursor;
try try
Screen.Cursor := crHourglass; Screen.Cursor := crHourglass;
Image.Picture.LoadFromFile(FImgInfo.FileName); Image.Picture.LoadFromFile(FFileName);
if FImgInfo.ExifData <> nil then if Assigned(FImgInfo) and Assigned(FImgInfo.ExifData) then
RotateBitmap(Image.Picture.Bitmap, FImgInfo.ExifData.ImgOrientation); RotateBitmap(Image.Picture.Bitmap, FImgInfo.ExifData.ImgOrientation);
FImageLoaded := true; FImageLoaded := true;
finally finally
@ -561,7 +563,10 @@ begin
'Date: %s', [ 'Date: %s', [
FImgInfo.Filename, FImgInfo.FileSize div 1024, DateTimeToStr(FImgInfo.FileDate)]) FImgInfo.Filename, FImgInfo.FileSize div 1024, DateTimeToStr(FImgInfo.FileDate)])
else else
FilenameInfo.caption := '< no file >'; if FFileName <> '' then
FilenameInfo.Caption := Format('File: %s', [FFileName])
else
FilenameInfo.Caption := '< no file >';
end; end;
end. end.

View File

@ -1,7 +1,8 @@
unit fpeExifData; unit fpeExifData;
{$IFDEF FPC} {$IFDEF FPC}
{$mode objfpc}{$H+} //{$mode objfpc}{$H+}
{$MODE DELPHI}
{$ENDIF} {$ENDIF}
{$I fpexif.inc} {$I fpexif.inc}

View File

@ -1,7 +1,8 @@
unit fpeGlobal; unit fpeGlobal;
{$IFDEF FPC} {$IFDEF FPC}
{$mode objfpc}{$H+} //{$mode objfpc}{$H+}
{$MODE DELPHI}
{$ENDIF} {$ENDIF}
{$I fpExif.inc} {$I fpExif.inc}

View File

@ -1,7 +1,7 @@
unit fpeIptcData; unit fpeIptcData;
{$IFDEF FPC} {$IFDEF FPC}
{$MODE Delphi} {$MODE Delphi}
{$ENDIF} {$ENDIF}
{$I fpexif.inc} {$I fpexif.inc}

View File

@ -44,7 +44,8 @@
unit fpeIptcReadWrite; unit fpeIptcReadWrite;
{$IFDEF FPC} {$IFDEF FPC}
{$MODE objfpc}{$H+} //{$MODE objfpc}{$H+}
{$MODE DELPHI}
{$ENDIF} {$ENDIF}
interface interface
@ -86,7 +87,10 @@ type
implementation implementation
uses uses
lConvEncoding, fpeStrConsts; {$IFDEF FPC}
lConvEncoding,
{$ENDIF}
fpeStrConsts;
type type
// http://search.cpan.org/dist/Image-MetaData-JPEG/lib/Image/MetaData/JPEG/Structures.pod#Structure_of_an_IPTC_data_block // http://search.cpan.org/dist/Image-MetaData-JPEG/lib/Image/MetaData/JPEG/Structures.pod#Structure_of_an_IPTC_data_block

View File

@ -2,7 +2,10 @@
unit fpeMakerNoteCanon; unit fpeMakerNoteCanon;
{$mode objfpc}{$H+} {$IFDEF FPC}
// {$mode objfpc}{$H+}
{$MODE DELPHI}
{$ENDIF}
interface interface

View File

@ -1,6 +1,9 @@
unit fpeMakerNoteCasio; unit fpeMakerNoteCasio;
{$mode objfpc}{$H+} {$IFDEF FPC}
{$MODE DELPHI}
//{$mode objfpc}{$H+}
{$ENDIF}
interface interface

View File

@ -1,6 +1,9 @@
unit fpeMakerNoteEpson; unit fpeMakerNoteEpson;
{$mode objfpc}{$H+} {$IFDEF FPC}
{$MODE DELPHI}
//{$mode objfpc}{$H+}
{$ENDIF}
interface interface
@ -18,7 +21,8 @@ implementation
procedure BuildEpsonTagDefs(AList: TTagDefList); procedure BuildEpsonTagDefs(AList: TTagDefList);
const const
M = DWord(TAGPARENT_MAKERNOTE); // M = DWord(TAGPARENT_MAKERNOTE);
M = LongWord(TAGPARENT_MAKERNOTE);
begin begin
Assert(AList <> nil); Assert(AList <> nil);
with AList do begin with AList do begin

View File

@ -1,6 +1,9 @@
unit fpeMakerNoteFuji; unit fpeMakerNoteFuji;
{$mode objfpc}{$H+} {$IFDEF FPC}
{$MODE DELPHI}
//{$mode objfpc}{$H+}
{$ENDIF}
interface interface
@ -74,7 +77,7 @@ resourcestring
procedure BuildFujiTagDefs(AList: TTagDefList); procedure BuildFujiTagDefs(AList: TTagDefList);
const const
M = DWord(TAGPARENT_MAKERNOTE); M = LongWord(TAGPARENT_MAKERNOTE);
begin begin
Assert(AList <> nil); Assert(AList <> nil);
with AList do begin with AList do begin

View File

@ -1,6 +1,9 @@
unit fpeMakerNoteMinolta; unit fpeMakerNoteMinolta;
{$mode objfpc}{$H+} {$IFDEF FPC}
//{$mode objfpc}{$H+}
{$MODE DELPHI}
{$ENDIF}
interface interface

View File

@ -1,6 +1,9 @@
unit fpeMakerNoteNikon; unit fpeMakerNoteNikon;
{$mode objfpc}{$H+} {$IFDEF FPC}
{$MODE DELPHI}
//{$mode objfpc}{$H+}
{$ENDIF}
interface interface
@ -336,7 +339,7 @@ end;
procedure TNikonMakerNoteReader.GetTagDefs(AStream: TStream); procedure TNikonMakerNoteReader.GetTagDefs(AStream: TStream);
var var
b: array of byte; b: TBytes; //array of byte;
tmp, tmp2: String; tmp, tmp2: String;
p: Integer; p: Integer;
streamPos: Int64; streamPos: Int64;
@ -393,7 +396,8 @@ begin
FBigEndian := false FBigEndian := false
else else
exit; exit;
dw := AStream.ReadDWord; dw := ReadDWord(AStream);
// dw := AStream.ReadDWord;
if FBigEndian then dw := BEToN(dw) else dw := LEToN(dw); if FBigEndian then dw := BEToN(dw) else dw := LEToN(dw);
if dw = 8 then if dw = 8 then
Result := true; Result := true;

View File

@ -1,6 +1,9 @@
unit fpeMakerNoteOlympus; unit fpeMakerNoteOlympus;
{$mode objfpc}{$H+} {$IFDEF FPC}
{$MODE DELPHI}
//{$mode objfpc}{$H+}
{$ENDIF}
interface interface
@ -455,7 +458,7 @@ const
SIGNATURE_V3I = 'OLYMPUS'#00'II'#03#00; SIGNATURE_V3I = 'OLYMPUS'#00'II'#03#00;
SIGNATURE_V3M = 'OLYMPUS'#00'MM'#03#00; SIGNATURE_V3M = 'OLYMPUS'#00'MM'#03#00;
var var
hdr: array of byte; hdr: TBytes; //array of byte;
p: Int64; p: Int64;
begin begin
p := AStream.Position; p := AStream.Position;
@ -560,10 +563,12 @@ var
intVal: TExifIntegerArray; intVal: TExifIntegerArray;
s: String; s: String;
lkup: TStringArray; lkup: TStringArray;
val1: Integer = -1; val1: Integer;
val2: Integer = -1; val2: Integer;
begin begin
Result := ''; Result := '';
val1 := -1;
val2 := -1;
if (toDecodeValue in FOptions) then begin if (toDecodeValue in FOptions) then begin
intVal := GetAsIntegerArray; intVal := GetAsIntegerArray;
if Length(intVal) >= 3 then begin if Length(intVal) >= 3 then begin

View File

@ -1,6 +1,9 @@
unit fpeMakerNoteSanyo; unit fpeMakerNoteSanyo;
{$mode objfpc}{$H+} {$IFDEF FPC}
{$MODE DELPHI}
//{$mode objfpc}{$H+}
{$ENDIF}
interface interface
@ -33,7 +36,7 @@ resourcestring
// from dExif // from dExif
procedure BuildSanyoTagDefs(AList: TTagDefList); procedure BuildSanyoTagDefs(AList: TTagDefList);
const const
M = DWord(TAGPARENT_MAKERNOTE); M = LongWord(TAGPARENT_MAKERNOTE);
begin begin
Assert(AList <> nil); Assert(AList <> nil);
with AList do begin with AList do begin

View File

@ -1104,7 +1104,7 @@ begin
raise EFpExif.CreateFmt('Value %d out of range for tag "%s"', [AValue, FName]); raise EFpExif.CreateFmt('Value %d out of range for tag "%s"', [AValue, FName]);
ttSInt8: ttSInt8:
if not WithRangeCheck or ((AValue >= -128) and (AValue <= 127)) then if not WithRangeCheck or ((AValue >= -128) and (AValue <= 127)) then
FRawData[AIndex] := {%H-}PByte(AValue)^ FRawData[AIndex] := PByte(@AValue)^
else else
raise EFpExif.CreateFmt('Value %d out of range for tag "%s"', [AValue, FName]); raise EFpExif.CreateFmt('Value %d out of range for tag "%s"', [AValue, FName]);
ttSInt16: ttSInt16:

View File

@ -1,7 +1,8 @@
unit fpeUtils; unit fpeUtils;
{$IFDEF FPC} {$IFDEF FPC}
{$mode ObjFPC}{$H+} {$mode ObjFPC}{$H+}
//{$MODE DELPHI}
{$ENDIF} {$ENDIF}
{$I fpExif.inc} {$I fpExif.inc}
@ -21,9 +22,9 @@ uses
type type
{$IFDEF FPC} {$IFDEF FPC}
{$IF FPC_FULLVERSION < 3000200} // {$IF FPC_FULLVERSION < 30002}
TStringArray = array of string; TStringArray = array of string;
{$ENDIF} // {$ENDIF}
TInt64List = specialize TFPGList<int64>; TInt64List = specialize TFPGList<int64>;
{$ELSE} {$ELSE}

View File

@ -1,3 +1,3 @@
{$IF FPC_FullVersion < 30000} {$IF FPC_FullVersion < 30000}
{$UNDEF FPC3+} {$UNDEF FPC3+}
{$ENDIF} {$ENDIF}