fpexif: Continue reading jpg when unexpected EXIF segment is found. Show built-in shell icons in metadata viewer.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8003 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2021-04-27 14:48:09 +00:00
parent c50e2a4f0a
commit 2ea4de6d2b
3 changed files with 17 additions and 15 deletions

View File

@ -29,7 +29,6 @@ object MainForm: TMainForm
Align = alTop
FileSortType = fstFoldersFirst
HideSelection = False
Images = ImageList
ReadOnly = True
TabOrder = 0
OnGetImageIndex = ShellTreeViewGetImageIndex
@ -58,7 +57,6 @@ object MainForm: TMainForm
HideSelection = False
Mask = '*.jpg;*.jpeg;*.jpe;*.tiff;*.tif'
ReadOnly = True
SmallImages = ImageList
SortColumn = 0
TabOrder = 2
OnSelectItem = ShellListViewSelectItem
@ -363,8 +361,8 @@ object MainForm: TMainForm
SimplePanel = False
end
object ImageList: TImageList
left = 89
top = 118
Left = 89
Top = 118
Bitmap = {
4C7A0300000010000000100000009E0200000000000078DAEDD6DD4F52611CC0
712EBAE80FE81FE81FE8A69BAE9A372D7BD1B5B979916B6B8A446B85DA666CCE

View File

@ -78,7 +78,7 @@ implementation
{$R *.lfm}
uses
LCLType, IniFiles, Math, StrUtils, DateUtils, IntfGraphics,
LCLType, LCLVersion, IniFiles, Math, StrUtils, DateUtils, IntfGraphics,
fpeTags, fpeExifData, fpeIptcData;
const
@ -178,6 +178,10 @@ end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
{$IF LCL_FullVersion < 2010000}
ShellListView.SmallImages := ImageList;
ShellTreeView.Images := ImageList;
{$ENDIF}
//ShellListView.Parent.DoubleBuffered := true;
end;

View File

@ -526,16 +526,16 @@ begin
if FMetaDataKinds * [mdkExif, mdkExifNoMakerNotes] <> [] then begin
reader := TExifReader.Create(self);
try
if not TExifReader(reader).ReadExifHeader(AStream) then
exit;
if not TExifReader(reader).ReadTiffHeader(AStream, bigEndian) then
exit;
FExifData := CreateExifData(bigEndian);
try
reader.ReadFromStream(AStream, ifJpeg);
except
FreeAndNil(FExifData);
raise;
if TExifReader(reader).ReadExifHeader(AStream) and
TExifReader(reader).ReadTiffHeader(AStream, bigEndian) then
begin
FExifData := CreateExifData(bigEndian);
try
reader.ReadFromStream(AStream, ifJpeg);
except
FreeAndNil(FExifData);
raise;
end;
end;
finally
reader.Free;