With MemoObject.AutoRemind …… '分配文件号 TmpFileNumber = FreeFile '打开文件 Open .FileName For Binary As TmpFileNumber '重定义字节数组大小 ReDim BtFileContent(LOF(TmpFileNumber)) As Byte '读取文件 Get #TmpFileNumber, , BtFileContent '字节数组转字符串 StrFileContent = StrConv(BtFileContent, vbUnicode) '比较内容 If StrFileContent <> .Srouce Then .Srouce = StrFileContent '不同则按照当前文件内容修改 End If Close #TmpFileNumber
Else '非内嵌 .Srouce = "" '清除属性 End If Put #1, , .Srouce & E_AutoRemind End With
现在假设已经有按照上面代码写出来的一个文件。这是下一次运行,文件现在要重新读出来,我就用查找标志的方法,将中间的数据重新读出来,然后再用Open .FileName For Binary As #1再重新写成原来的文件。可是问题就是写出来的文件没用了。 我做测试的时候开始嵌入的是一个完好的音频文件(是一首歌),可是重新写出来的文件虽然播放器依然认可他是一个音频,可是播放出来的就不是歌了,是一些乱七八糟的噪音。后来我又嵌入一张图片,发现随后写出来的文件虽然也是图片,可是图案已经扭曲变形,不再是原来的东西了。而且发现写出来的文件总是比原来的要小。 现在,我不懂的是 我用嵌入的时候OPen语句完整地读出来的文件数据,为什么后来再写的时候会少了什么东西呢?其次,写出来的文件也不是说变得完全没用了,如果是中间转换成字符串,这样丢失了二进制数据的某一些特性,那么写出来的文件就应该什么都不是。可是现在写出来的文件音频还是音频,图像还是图像;播放器,图片查看器都不会提示这是一个不符合要求的文件,只是播出来的音乐不对了,显示出来的图片也不对了。这就更不懂了