前几天网友反馈我的数据图片读写器在Access2000下出现了运行错误,百思不得其解。今天我在一台电脑山安装了Access2000,终于揭开了谜底,而且是个匪夷所思的谜底。
根据网友反馈,打开已有的图片保存后再打开正常,而另存则无法打开,我首先无法理解这一点,因为我自己清楚,我的保存和另存的代码几乎是完全相同的,只是保存使用了原始路径,另存重新获取一个路径而已,绝无可能造成不同的数据。于是我把同一张图片进行了保存和另存,然后使用DOS命令FC进行两个文件的二进制比较,结果是完全相同,但是依然是一张可以打开,一张无法打开。
于是我新建了一个窗体,分别插入这两个图片,然后分析他们插入后内存中的二进制数据。怪事出现了,保存的文件内存中是DIB格式,而另存的文件在内存中是EMF格式(文件数据完全相同),完全相同的数据怎么可能出现不同的载入格式(而且是固定的,不是随机的)
经过N次自己都觉得不可理喻的尝试后,我终于发现了Access2000中的一个……BUG?Or Feature?我实在无法定义,只能在此描述如下:
Access 2000中,当你在Image控件中载入一张BMP后缀名的图片时,将有两种可能:
1、后缀名为.bmp(小写字母),则作为DIB格式载入
2、后缀名为.BMP(大写字母),则作为EMF格式载入
Access 2003中,无论后缀名大写小写,均作为DIB格式载入。
同时,这里所指的后缀名,并不是文件本身的后缀名,而是你打开文件时候所使用路径的后缀名,同样一个BMP文件,你使用小写路径打开,将是DIB格式,而大写路径打开则是EMF格式。
[此贴子已经被作者于2005-9-28 15:32:16编辑过]
|