Delphi 在lazarus安装CCR.EXIF包

Delphi 在lazarus安装CCR.EXIF包,delphi,gps,lazarus,Delphi,Gps,Lazarus,我已经安装了我找到的包CCR.EXIF。但我有一些问题 我找到了读取有关图像的GPS信息的代码,并尝试使用该代码,但在CheckTrue上出现错误,现在我不确定这是其他编程语言还是安装错误 procedure TstExifLE.ReadGPSTest; var imgInfo: TImgInfo; lTag: TTag; begin imgInfo := TImgInfo.Create; try imgInfo.LoadFromFile(WorkFile_JpegWithExif);

我已经安装了我找到的包CCR.EXIF。但我有一些问题

我找到了读取有关图像的GPS信息的代码,并尝试使用该代码,但在CheckTrue上出现错误,现在我不确定这是其他编程语言还是安装错误

procedure TstExifLE.ReadGPSTest;

var
imgInfo: TImgInfo;
lTag: TTag;
begin
  imgInfo := TImgInfo.Create;
  try
imgInfo.LoadFromFile(WorkFile_JpegWithExif);

lTag := imgInfo.ExifData.TagByName['GPSVersionID'];
CheckTrue(lTag <> nil, 'Tag "GPSVersionID" not found');
CheckTrue(lTag is TVersionTag, 'Tag "GPSVersionID" is not TVersionTag');
TVersionTag(lTag).Separator := '.';
CheckEquals('2.3.0.0', lTag.AsString, 'Value mismatch of tag "GPSVersionID"');

lTag := imgInfo.ExifData.TagByName['GPSLatitude'];
CheckTrue(lTag <> nil, 'Tag "GPSLatitude" not found');
CheckTrue(lTag is TGPSPositionTag, 'Tag "GPSLatitude" is not a TGpsPositionTag');
TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"';
CheckEquals('51 deg 33'' 48.28"', lTag.AsString, 'Value mismatch of tag "GPSLatitude"');

lTag := imgInfo.ExifData.TagByName['GPSLatitudeRef'];
CheckTrue(lTag <> nil, 'Tag "GPSLatitudeRef" not found');
CheckEquals('South', lTag.AsString, 'Value mismatch of tag "GPSLatitudeRef"');

lTag := imgInfo.ExifData.TagByName['GPSLongitude'];
CheckTrue(lTag <> nil, 'Tag "GPSLongitude" not found');
CheckTrue(lTag is TGPSPositionTag, 'Tag "GPSLongitude" is not a TGpsPositionTag');
TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"';
CheckEquals('59 deg 49'' 53.55"', lTag.AsString, 'Value mismatch of tag "GPSLongitude"');

lTag := imgInfo.ExifData.TagByName['GPSLongitudeRef'];
CheckTrue(lTag <> nil, 'Tag "GPSLongitudeRef" not found');
CheckEquals('West', lTag.AsString, 'Value mismatch of tag "GPSLongitudeRef"');

finally
imgInfo.Free;
  end;
end; 
程序TstExifLE.ReadGPSTest;
变量
imgInfo:TImgInfo;
lTag:TTag;
开始
imgInfo:=TImgInfo.Create;
尝试
imgInfo.LoadFromFile(工作文件\u JpegWithExif);
lTag:=imgInfo.ExifData.TagByName['GPSVersionID'];
CheckTrue(lTag nil,'Tag“GPSVersionID”not found');
选中True(lTag为TVersionTag,'标记“GPSVersionID”不是TVersionTag');
TVersionTag(lTag).分隔符:='.';
CheckEquals('2.3.0.0',lTag.AsString',标记“GPSVersionID”的值不匹配);
lTag:=imgInfo.ExifData.TagByName['GPSLatitude'];
检查正确(lTag nil,“未找到标记“GPSLatitude”);
选中True(lTag是TGPSPositionTag,'标记“GPSLatitude”不是TGPSPositionTag');
TGpsPositionTag(lTag).FormatStr:='%0.0f度%1.0f''%2.2f';
CheckEquals('51 deg 33''48.28'',lTag.AsString,'标记“GPSLatitude”的值不匹配');
lTag:=imgInfo.ExifData.TagByName['GPSLatitudeRef'];
检查正确(lTag nil,'标记“GPSLatitudeRef”未找到');
CheckEquals('South',lTag.AsString',标记“GPSLatitudeRef”的值不匹配);
lTag:=imgInfo.ExifData.TagByName['GPSLongitude'];
检查正确(lTag nil,“未找到标记“GPSLongitude”);
选中True(lTag是TGPSPositionTag,'标记“GPSLongitude”不是TGPSPositionTag');
TGpsPositionTag(lTag).FormatStr:='%0.0f度%1.0f''%2.2f';
CheckEquals('59度49''53.55'',lTag.AsString,'tag“GPSLongitude”的值不匹配');
lTag:=imgInfo.ExifData.TagByName['gpslngituderef'];
选中True(lTag nil,“未找到”标记为“GPSLNGITUDEREF”);
CheckEquals('West',lTag.AsString',标记“gpslngituderef”的值不匹配);
最后
imgInfo.Free;
终止
终止
错误消息:

-未找到标识符“TstExifLE”

-找不到标识符“CheckTrue”

-找不到标识符“CheckEquals”

编辑 我创建了类TstExifLe,这就是我得到的以下错误

找不到标识符“TTestCase”


您找到的代码是DUnit测试的一部分。所有DUnit测试都源自TTestCase,并使用方法CheckTrue、CheckEquals等作为测试已通过的断言。您需要重新考虑代码,以消除编译DUnit的需要,或者如果您只想看到它的实际运行,请下载并安装DUnit。

您找到的代码是DUnit测试的一部分。所有DUnit测试都源自TTestCase,并使用方法CheckTrue、CheckEquals等作为测试已通过的断言。您需要重新考虑代码,以消除对DUnit的需要,以便编译它,或者如果您只想看到它的运行情况,请下载并安装DUnit。

为了完整起见,我将这样提取GPS信息:

procedure TForm1.ReadGPS; var imgInfo: TImgInfo; lTag: TTag; begin imgInfo := TImgInfo.Create; try imgInfo.LoadFromFile(WorkFile_JpegWithExif); lTag := imgInfo.ExifData.TagByName['GPSVersionID']; Memo1.Lines.Add('GPSVersionID: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLatitude']; TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"'; Memo1.Lines.Add('GPSLatitude: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLatitudeRef']; Memo1.Lines.Add('GPSLatitudeRef: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLongitude']; TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"'; Memo1.Lines.Add('GPSLongitude: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLongitudeRef']; Memo1.Lines.Add('GPSLongitudeRef: ' + lTag.AsString); finally imgInfo.Free; end; end; 程序TForm1.ReadGPS; 变量 imgInfo:TImgInfo; lTag:TTag; 开始 imgInfo:=TImgInfo.Create; 尝试 imgInfo.LoadFromFile(工作文件\u JpegWithExif); lTag:=imgInfo.ExifData.TagByName['GPSVersionID']; Memo1.Lines.Add('GPSVersionID:'+lTag.AsString); lTag:=imgInfo.ExifData.TagByName['GPSLatitude']; TGpsPositionTag(lTag).FormatStr:='%0.0f度%1.0f''%2.2f'; 备忘录1.Lines.Add('GPSLatitude:'+lTag.AsString); lTag:=imgInfo.ExifData.TagByName['GPSLatitudeRef']; 备忘录1.Lines.Add('gpslatitederef:'+lTag.AsString); lTag:=imgInfo.ExifData.TagByName['GPSLongitude']; TGpsPositionTag(lTag).FormatStr:='%0.0f度%1.0f''%2.2f'; 备注1.Lines.Add('GPSLongitude:'+lTag.AsString); lTag:=imgInfo.ExifData.TagByName['gpslngituderef']; 备注1.Lines.Add('gpslngituderef:'+lTag.AsString); 最后 imgInfo.Free; 终止
结束 为了完整起见,我将这样提取GPS信息:

procedure TForm1.ReadGPS; var imgInfo: TImgInfo; lTag: TTag; begin imgInfo := TImgInfo.Create; try imgInfo.LoadFromFile(WorkFile_JpegWithExif); lTag := imgInfo.ExifData.TagByName['GPSVersionID']; Memo1.Lines.Add('GPSVersionID: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLatitude']; TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"'; Memo1.Lines.Add('GPSLatitude: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLatitudeRef']; Memo1.Lines.Add('GPSLatitudeRef: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLongitude']; TGpsPositionTag(lTag).FormatStr := '%0:.0f deg %1:.0f'' %2:.2f"'; Memo1.Lines.Add('GPSLongitude: ' + lTag.AsString); lTag := imgInfo.ExifData.TagByName['GPSLongitudeRef']; Memo1.Lines.Add('GPSLongitudeRef: ' + lTag.AsString); finally imgInfo.Free; end; end; 程序TForm1.ReadGPS; 变量 imgInfo:TImgInfo; lTag:TTag; 开始 imgInfo:=TImgInfo.Create; 尝试 imgInfo.LoadFromFile(工作文件\u JpegWithExif); lTag:=imgInfo.ExifData.TagByName['GPSVersionID']; Memo1.Lines.Add('GPSVersionID:'+lTag.AsString); lTag:=imgInfo.ExifData.TagByName['GPSLatitude']; TGpsPositionTag(lTag).FormatStr:='%0.0f度%1.0f''%2.2f'; 备忘录1.Lines.Add('GPSLatitude:'+lTag.AsString); lTag:=imgInfo.ExifData.TagByName['GPSLatitudeRef']; 备忘录1.Lines.Add('gpslatitederef:'+lTag.AsString); lTag:=imgInfo.ExifData.TagByName['GPSLongitude']; TGpsPositionTag(lTag).FormatStr:='%0.0f度%1.0f''%2.2f'; 备注1.Lines.Add('GPSLongitude:'+lTag.AsString); lTag:=imgInfo.ExifData.TagByName['gpslngituderef']; 备注1.Lines.Add('gpslngituderef:'+lTag.AsString); 最后 imgInfo.Free; 终止
终止请在上下文中显示导致问题的代码。到底是什么错误(使用“复制-粘贴”获取完整的错误消息。您显示的代码似乎是测试套装中的测试。它肯定不是您希望在自己的项目中使用的代码。因此,我只需确定您现在是否在包的单元测试部分。我不知道包,但您可能应该使用code在
fpexif
目录中现在您已经用
CheckTru
()解决了问题,您应该发布一个关于使用CCR.EXIF代码的新问题。请在上下文中显示导致问题的代码。具体错误是什么(使用“复制-粘贴”获取完整的错误消息。您显示的代码似乎是测试套装中的测试。它肯定不是您希望在自己的项目中使用的代码。因此,我只需确定您现在是否在包的单元测试部分。我不知道包,但您可能应该使用co德因