Delphi 使用CCR读取Exif数据。Exif导致访问冲突
我有一个名为ViewPhotos的程序,在读取Exif数据时会出现问题。我正在使用CCR.Exif(由Chris Rollistone编写)。Exif不位于项目目录中。 为了弄清楚发生了什么,我创建了一个名为TestExif的小程序,它由一个表单和一个按钮组成,调用下面所示的过程。我还复制了完全相同的过程来查看照片。TestExif使用与ViewPhotos相同的单位CCR.ExifDelphi 使用CCR读取Exif数据。Exif导致访问冲突,delphi,jpeg,exif,Delphi,Jpeg,Exif,我有一个名为ViewPhotos的程序,在读取Exif数据时会出现问题。我正在使用CCR.Exif(由Chris Rollistone编写)。Exif不位于项目目录中。 为了弄清楚发生了什么,我创建了一个名为TestExif的小程序,它由一个表单和一个按钮组成,调用下面所示的过程。我还复制了完全相同的过程来查看照片。TestExif使用与ViewPhotos相同的单位CCR.Exif procedure TForm1.Button1Click(Sender: TObject); var Ex
procedure TForm1.Button1Click(Sender: TObject);
var
ExifData: TExifData;
ADate: TDateTime;
OriginalDate: TDateTime;
Mes: string;
begin
ExifData := TExifData.Create;
try
ExifData.LoadFromGraphic('C:\000\APhotos\ADigital\2017\BlueMountains\PC090131.JPG');
ADate := ExifData.DateTime;
Mes := 'Date' + ' = ' + DateToStr(ADate) + #13;
OriginalDate := ExifData.DateTimeOriginal;
Mes := Mes + 'OriginalDate' + ' = ' + DateToStr(OriginalDate);
finally
ExifData.Free;
end;
ShowMessage(Mes);
end;
现在,我做以下工作:
要正确编译CCR.Exif,用于完整布尔运算的语法选项必须保留false(这是默认设置)。使用调试器定位AV发生在哪一行。如果你不知道怎么做,从这里开始:,或者从这里开始:AV的文本会很有趣。确切的地址有时(但通常不是)可能是错误的暗示。另外,看看堆栈跟踪。这通常表明哪一行是罪魁祸首。@Rudi:我也是(业余爱好者)。易于阅读的堆栈跟踪:顶部是最后一个调用的堆栈跟踪,下面是调用堆栈跟踪的代码,下面是调用堆栈跟踪的代码,等等。FWIW,如果打开这样的错误消息,只需按Ctrl+C,对话框的文本(包括OK按钮)将复制到剪贴板。只需将该文本粘贴到您的邮件中。不需要截图和张贴图片。@Rudi:好的,这很有意义。但请注意,默认情况下这是错误的,AFAICT几乎没有任何人(包括我)检查过情况是否如此。ISTM认为,在极少数需要的情况下,完全的布尔运算可以在代码中显式完成,因此该选项可以从语言中完全删除(在我看来)。