CCM 发表于 2013-1-4 17:01:49

如何让FileReadLine去调用ARRAY内的条件

各位大侠

目前是这样子,我想先定义一些字串,然後让FileReadLine去检查文档是否有这些字串存在,达到文档格式的判断。因为有时候会收到的PDF文档,实际上是DOC(透过笔记本看原始码得知),所以想试着作一个工具来判断文档类型。(当然是以比较常见的格式)

目前我的代码如下,但ARRAY的部分不知道该怎么写,请各位大侠帮帮忙,或者我的思路根本错误,也请赐知。


#include <array.au3>

Local $avArray

$avArray = "PDF"
$avArray = "WORD"
$avArray = "EXCEL"
$avArray = "TIF"

$fpd = FileOpenDialog("", "", "(*.*)")
$file = FileOpen($fpd, 0)

If $file = -1 Then
        MsgBox(0, "error", "cancel")
        Exit
EndIf

While 1
        $line = FileReadLine($file)
        If @error Then ExitLoop
        Local $iKeyIndex = _ArraySearch($avArray, $line); 这里我想不出怎么写
        If Not @error Then
                MsgBox(0, 'Entry found', ' Index: ' & $avArray[$iKeyIndex])
        Else
                MsgBox(0, 'Entry Not found', ' Error: ' & @error)
        EndIf
        Exit
WEnd
FileClose($file)

annybaby 发表于 2013-1-4 17:25:24

回复 1# CCM

楼主有试过用记事本看WORD格式的文件一定会有DOC的字符??

love5173 发表于 2013-1-4 17:32:13

回复 1# CCM

我看了半天楞是没看明白你的意思,判断文件的类型不是看文件名的后缀就可以了吗?
你直接读取文件?
我不是很懂,看也没有人回答你,所以问问

annybaby 发表于 2013-1-4 17:36:34

回复 3# love5173

不是的,文件后缀只是表面而已,甚至,文件名跟文件内容本身没有关系(所以,改变文件名不会改变文件的MD5)

楼主已经说了,发来的一个"AU3代码大全.PDF",它可能是个DOC格式的文件~~

kevinch 发表于 2013-1-4 17:54:25

直接下载个斯托夫文件格式分析器得了,自己写也不能是这样识别啊,至少应该是判断文件头格式吧

netegg 发表于 2013-1-4 18:27:29

分析文件头无疑是最正确的方式,不过有一个投机取巧的办法,不用管文件名,shellexecute系统就给匹配了

love5173 发表于 2013-1-4 20:03:22

回复 4# annybaby
谢谢您的科普,你可以让楼主开一个像魔兽世界安装包那样的文件试试看!

shqf 发表于 2013-1-4 20:24:03

用循环就会不停读取行并进行判断直到文尾,感觉不需要,判断只要一次就行。
文件第一行,可能包含了全部文件头或文件头部分,如果能找出这四种格式文件的第一行所特有的字符串,就可以判断出文件格式。这里的判断用StringInStr()函数更合适。

xiaowo 发表于 2013-1-5 15:05:36

回复 4# annybaby


    是否真有个“AU3代码大全.PDF”,求下载

annybaby 发表于 2013-1-5 16:52:58

回复 9# xiaowo

汉化包里几千个例子及UDF函数都看过了??理解了??
没有??

xiaowo 发表于 2013-1-6 08:12:40

回复 10# annybaby


    {:face (396):}原来你指的是介个啊……

annybaby 发表于 2013-1-6 11:16:46

回复 11# xiaowo


    我没有指什么~~
只是想说,手中有的都不看,却去到处寻一些自己都不知道自己会不会用到的东西,有意思吗???

xiaowo 发表于 2013-1-6 15:05:24

回复xiaowo


    我没有指什么~~
只是想说,手中有的都不看,却去到处寻一些自己都不知道自己会不会用 ...
annybaby 发表于 2013-1-6 11:16 http://www.autoitx.com/images/common/back.gif


    兄弟此言差矣,学无止境啊,何况AU3可以做的事很多,我们通常只对其中一部分应用感兴趣,希望在感兴趣的方面有更深入的学习

annybaby 发表于 2013-1-6 16:02:59

回复 13# xiaowo

请问"差"在哪里了??我什么时候说过"学有止境"?不必去学习??或者"AU3只能用来安装软件"这类的话(事实上,我从来没有使用AU3来安装过一个软件~~)
退一亿步来讲,如果只对其中一部分应用感兴趣,就直接找这部分的资料,而不是在"代码大全"中找~~

xiaowo 发表于 2013-1-6 22:00:18

回复xiaowo

请问"差"在哪里了??我什么时候说过"学有止境"?不必去学习??或者"AU3只能用来安装软件"这类 ...
annybaby 发表于 2013-1-6 16:02 http://www.autoitx.com/images/common/back.gif


    失之毫厘,差之千里。“却去到处寻一些自己都不知道自己会不会用到的东西”,不知道自己会不会用到,同样也不知道自己什么时候会用到,此为差也。“大全”虽大虽全,但大、全不代表滥或无用,并且即为大为全,必有能用之码,必有我能取之处,故而求之:)
页: [1] 2
查看完整版本: 如何让FileReadLine去调用ARRAY内的条件