Pascal DExif包中某些字段的编译器错误

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

我安装了DEXIF包,能够读取一些EXIF条目。但不是文档中描述的计算值。 下面的代码显示了如何工作。对于注释行,我得到错误:标识符标识没有成员“focalLenght”等等。。 我怎样才能抓住这些和更多的领域

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添加名称。。。我会看一看,现在我更明白了。有一个愉快的周末!!!