ImageEn, unit iexMetaHelpers

iexMetaHelper Compatibility Notes


From v11.0.0 we simplified the meta-data exporting functionality as follows:
New TIEMetaListView component to instantly support the display and editing of meta-data
Replaced all CONTROL.Read*From*() methods with simply WriteTo
Replaced all CONTROL.Write*To*() methods with simply ReadFrom
Replaced all *CompatibleFile methods with IEFileTypeSupportsInfo()

EXIF Changes

Old Method Old Code Example New Code Example
EXIFCompatibleFile b := EXIFCompatibleFile( Filename ); b := ierEXIF in IEFileTypeSupportsInfo( Filename );
NewGridForEXIF StringGrid1.NewGridForEXIF(); Occurs automatically with ImageEnView1.IO.Params.WriteTo( StringGrid1, iemEXIF );
ReadGridFromEXIF StringGrid1.ReadGridFromEXIF( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.WriteTo( StringGrid1, iemEXIF );
WriteGridToEXIF StringGrid1.WriteGridToEXIF( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.ReadFrom( StringGrid1, iemEXIF );
NewListForEXIF ListView1.NewListForEXIF(); Occurs automatically with ImageEnView1.IO.Params.WriteTo( ListView1, iemEXIF );
ReadListFromEXIF ListView1.ReadListFromEXIF( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.WriteTo( ListView1, iemEXIF );
WriteListToEXIF ListView1.WriteListToEXIF( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.ReadFrom( ListView1, iemEXIF );
EXIF_WriteToStrings ImageEnView1.IO.Params.EXIF_WriteToStrings( memTags.Lines ); ImageEnView1.IO.Params.WriteTo( memTags.Lines, iemEXIF );
EXIF_ApertureValue_Str s := ImageEnView1.IO.Params.EXIF_ApertureValue_Str; s := ImageEnView1.IO.Params.EXIF_ApertureValue2;
ExposureTime_Str s := ImageEnView1.IO.Params.ExposureTime_Str; s := ImageEnView1.IO.Params.ExposureTime2;
EXIF_FNumber_Str s := ImageEnView1.IO.Params.EXIF_FNumber_Str; s := ImageEnView1.IO.Params.EXIF_FNumber2;
EXIF_MaxApertureValue_Str s := ImageEnView1.IO.Params.EXIF_MaxApertureValue_Str; s := ImageEnView1.IO.Params.EXIF_MaxApertureValue2;
EXIF_ShutterSpeedValue_Str s := ImageEnView1.IO.Params.EXIF_ShutterSpeedValue_Str; s := ImageEnView1.IO.Params.EXIF_ShutterSpeedValue2;
EXIF_XResolution s := ImageEnView1.IO.Params.EXIF_XResolution_Str; s := ImageEnView1.IO.Params.EXIF_XResolution2;
EXIF_YResolution s := ImageEnView1.IO.Params.EXIF_YResolution_Str; s := ImageEnView1.IO.Params.EXIF_YResolution2;
EXIF_CanWriteEXIFData b := ImageEnView1.IO.Params.EXIF_CanWriteEXIFData() b := ierEXIF in ImageEnView1.IO.Params.SupportsInfo();

IPTC Changes
Old Method Old Code Example New Code Example
IPTC_HasIPTCData b := ImageEnView1.IO.Params.IPTC_HasIPTCData; b := ierIPTC in ImageEnView1.IO.Params.ContainsInfo();
IPTCCompatibleFile b := IPTCCompatibleFile( Filename ); b := ierIPTC in IEFileTypeSupportsInfo( Filename );
NewGridForIPTC StringGrid1.NewGridForIPTC(); Occurs automatically with ImageEnView1.IO.Params.WriteTo( StringGrid1, iemIPTC );
ReadGridFromIPTC StringGrid1.ReadGridFromIPTC( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.WriteTo( StringGrid1, iemIPTC );
WriteGridToIPTC StringGrid1.WriteGridToIPTC( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.ReadFrom( StringGrid1, iemIPTC );
NewListForIPTC ListView1.NewListForIPTC(); Occurs automatically with ImageEnView1.IO.Params.WriteTo( ListView1, iemIPTC );
ReadListFromIPTC ListView1.ReadListFromIPTC( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.WriteTo( ListView1, iemIPTC );
WriteListToIPTC ListView1.WriteListToIPTC( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.ReadFrom( ListView1, iemIPTC );
IPTC_WriteToStrings ImageEnView1.IO.Params.IPTC_WriteToStrings( memTags.Lines ); ImageEnView1.IO.Params.WriteTo( memTags.Lines, iemIPTC );

Dicom Changes
Old Method Old Code Example New Code Example
DicomCompatibleFile b := DicomCompatibleFile( Filename ); b := ierDicom in IEFileTypeSupportsInfo( Filename );
DICOM_HasDicomTags b := ImageEnView1.IO.Params.DICOM_HasDicomTags; b := ierDicom in ImageEnView1.IO.Params.ContainsInfo();
ReadGridFromDicom StringGrid1.ReadGridFromDicom( ImageEnView1.IO.Params, [ diProprietary, diChildTags ]); ImageEnView1.IO.Params.WriteTo( StringGrid1, iemDICOM, [], [ diProprietary, diChildTags ]);
ReadListFromDicom ListView1.ReadListFromDicom( ImageEnView1.IO.Params, [ diProprietary, diChildTags ]); ImageEnView1.IO.Params.WriteTo( ListView1, iemDICOM, [], [ diProprietary, diChildTags ]);
DICOM_WriteToStrings ImageEnView1.IO.Params.DICOM_WriteToStrings( memTags.Lines, [ diProprietary, diChildTags ]); ImageEnView1.IO.Params.WriteTo( memTags.Lines, iemDICOM, [], [ diProprietary, diChildTags ]);

XMP Changes
Old Method Old Code Example New Code Example
XMPCompatibleFile b := XMPCompatibleFile( Filename ); b := ierXMP in IEFileTypeSupportsInfo( Filename );
XMP_HasXMPData b := ImageEnView1.IO.Params.XMP_HasXMPData; b := ierXMP in ImageEnView1.IO.Params.ContainsInfo();
ReadGridFromXMP StringGrid1.ReadGridFromXMP( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.WriteTo( StringGrid1, iemXMP );
ReadListFromXMP ListView1.ReadListFromXMP( ImageEnView1.IO.Params ); ImageEnView1.IO.Params.WriteTo( ListView1, iemXMP );
XMP_WriteToStrings ImageEnView1.IO.Params.XMP_WriteToStrings( memTags.Lines ); ImageEnView1.IO.Params.WriteTo( memTags.Lines, iemXMP );

Miscellaneous Changes
Old Method Old Code Example New Code Example
InitializeGrid StringGrid1.InitializeGrid(); Occurs automatically with ImageEnView1.IO.Params.WriteTo(...);
ClearGridFields StringGrid1.ClearGridFields(); for i := 1 to StringGrid1.RowCount - 1 do StringGrid1.Cells[1, 1] := '';
InitializeList ListView1.InitializeList(); Occurs automatically with ImageEnView1.IO.Params.WriteTo(...);
ClearListFields ListView1.ClearListFields(); for i := 1 to ListView1.RowCount - 1 do ListView1.Cells[1, 1] := '';

Also note that the following legacy method were removed: GetExifTagList(), ContainsExifTag(), ReplaceExifTags(). If you need to support these, define IEIncludeDeprecatedInV8Minor in ie.inc