Pascal DExif包中某些字段的编译器错误
我安装了DEXIF包,能够读取一些EXIF条目。但不是文档中描述的计算值。 下面的代码显示了如何工作。对于注释行,我得到错误:标识符标识没有成员“focalLenght”等等。。 我怎样才能抓住这些和更多的领域Pascal DExif包中某些字段的编译器错误,pascal,exif,lazarus,Pascal,Exif,Lazarus,我安装了DEXIF包,能够读取一些EXIF条目。但不是文档中描述的计算值。 下面的代码显示了如何工作。对于注释行,我得到错误:标识符标识没有成员“focalLenght”等等。。 我怎样才能抓住这些和更多的领域 procedure TForm1.EXIFAnzeigen(filename: string); var ImgData: TImgData; i :integer; begin //EDitor leeren ValueListEditor1.Strings.Clea
procedure TForm1.EXIFAnzeigen(filename: string);
var
ImgData: TImgData;
i :integer;
begin
//EDitor leeren
ValueListEditor1.Strings.Clear;
if FileExists(filename) then begin
ImgData:= TImgData.Create();
ImgData.Tracelevel :=1;
try
if uppercase(ExtractFileExt(filename)) = '.JPG' then begin
if ImgData.ProcessFile(filename) then begin
if ImgData.HasEXIF then begin
ValueListEditor1.InsertRow('Camera Make',
ImgData.ExifObj.CameraMake,True);
ValueListEditor1.InsertRow('Camera Modell',
ImgData.ExifObj.CameraModel,True);
ValueListEditor1.InsertRow('Picture DateTime',
FormatDateTime(ISO_DATETIME_FORMAT, ImgData.ExifObj.GetImgDateTime),True);
ValueListEditor1.InsertRow('Width',
inttostr(ImgData.ExifObj.Width),True);
ValueListEditor1.InsertRow('FlashUsed',
intToStr(ImgData.ExifObj.FlashUsed),True);
// ValueListEditor1.InsertRow('FocalLength',
// inttostr(ImgData.ExifObj.FocalLength),True);
// ValueListEditor1.InsertRow('ApertureFNumber',
// ImgData.ExifObj.ApertureFNumber,True);
// ValueListEditor1.InsertRow('ExposureTime',
// ImgData.ExifObj.ExposureTime,True);
// ValueListEditor1.InsertRow('Distance',
// ImgData.ExifObj.Distance,True);
// ValueListEditor1.InsertRow('Process',
// ImgData.ExifObj.Process,True);
end else begin
ValueListEditor1.InsertRow('No EXIF','No Data',True);
end;
end else begin
ValueListEditor1.InsertRow('No EXIF','Processdata',True);
end;
end else begin
ValueListEditor1.Strings.Clear;
end;
finally
ImgData.Free;
end;
end;
end;
报告说:
一些更常见的字段可以作为的属性访问
ImgData的EXIFObj
并显示了一个读取这些属性的示例,部分与您成功读取代码的过程相同
但是,FocalLength
,以及其他在代码中失败的代码,必须以另一种方式访问,如文档所述:
其他EXIF字段可以通过使用属性TagValue和
指定EXIF属性的名称
以下示例说明:
ValueListEditor1.InsertRow('FocalLength',
inttostr(ImgData.ExifObj.TagValue['FocalLength']),True);
您是否尝试阅读源代码以查看哪些属性可用,以及何时(以及如何)使用它们?我确实搜索了代码,但在任何地方都没有找到“FocalLenght”。只要阅读文档就可以了。好吧,它不是
FocalLenght
,而是FocalLength
,如果你按照你在帖子和最后一条评论中的拼写方式搜索它,你显然找不到它。如果你在搜索中拼写正确,但没有找到它,那么它就不在了。谢谢你的反对票而不是帮助!!!我试着帮你,所以我不知道你为什么对我大喊大叫。你会发现在这里粗鲁并不能帮到你;人们不喜欢帮助不礼貌或觉得有资格的用户。这里没有人需要帮助你;我们是免费的,因为我们很慷慨。没有人欠你一个答案。你发帖不到一个小时了。耐心点。如果有人能帮忙,他们会的。如果情况紧急,请立即雇用一名承包商帮助您。如果这不适合你,还有其他不适合你的网站,你可以去寻求免费帮助。谢谢。。那有帮助!我可以用这种方法访问更多的标签。但我必须更深入一些,因为一些标签名没有找到,我希望我在场。在网上找到此列表:但我必须检查名称是否与DEXIF及其结果相对应。当然,最好坚持使用DEXIF
中的名称,或者根据需要添加新名称。这是一个完全不同的话题。在每个项目之前添加一个检查,类似于如果ImgData.ExifObj.TagValue['FocalLength']null,那么以避免错误如果我有能力,最好给DEXIF添加名称。。。我会看一看,现在我更明白了。有一个愉快的周末!!!