找回密码
 加入
搜索
查看: 1666|回复: 4

字符路径已经写入数组,但当用FileExists检查是否存在时,却报错??

[复制链接]
发表于 2010-2-4 20:53:46 | 显示全部楼层 |阅读模式
本帖最后由 天堂泪吻泪 于 2010-2-5 00:40 编辑

想写个返回空盘符的UDF,代码如下,如果把IF的那两行注释后就可以正常运行,但正常运行后,却发现多了一个[27]?????
试过用两层FOR都不行,请大家帮下忙吧!

见二楼和四楼都有例子!!!!
#include <array.au3>
_GetDriverEmptyLetter()
Func _GetDriverEmptyLetter()
        Local $AllLetter[2]
        Local $i
        $AllLetter[0] = 0
        For $i = 1 To 26                
                If Not FileExists(Chr(96 + $i) & ":") Then
                        $AllLetter[$i] = Chr(96 + $i) & ":"
                        $AllLetter[0] += 1
                ReDim $AllLetter[UBound($AllLetter) + 1]
                EndIf
        Next        
        _ArrayDisplay($AllLetter)
EndFunc   ;==>_GetDriverEmptyLetter

评分

参与人数 1金钱 +10 收起 理由
pusofalse + 10 感谢主动修改帖子分类为[已解决]。

查看全部评分

发表于 2010-2-4 23:25:10 | 显示全部楼层
#include <array.au3>
_GetDriverEmptyLetter()
Func _GetDriverEmptyLetter()
        Local $AllLetter[1]
        Local $i, $n = 1
        $AllLetter[0] = 0
        For $i = 1 To 26
                If Not FileExists(Chr(96 + $i) & ":") Then
                        $n += 1
                        ReDim $AllLetter[$n]
                        $AllLetter[$n - 1] = Chr(96 + $i) & ":"
                EndIf
        Next
        $AllLetter[0] = $n-1
        _ArrayDisplay($AllLetter)
EndFunc   ;==>_GetDriverEmptyLetter
按你的代码改的,似乎光驱没被正确辨别。

评分

参与人数 2金钱 +25 收起 理由
天堂泪吻泪 + 10 感谢你的答案,对我已经很有用了!
afan + 15

查看全部评分

 楼主| 发表于 2010-2-4 23:53:54 | 显示全部楼层
回复 2# 顽固不化


    先谢谢了!
帮助里是这样写的,

注意/说明

如果指定路径参数为未插入磁盘的软驱则 FileExists 的返回值为0.

原来不止是软驱,光驱也是一样!在下再去改一改!
尝试用DeviceGetDevice("ALL")做二次循环看行不行??
发表于 2010-2-5 00:25:40 | 显示全部楼层
回复 3# 天堂泪吻泪


    这样行不?
#include <array.au3>

$a = _GetDriverEmptyLetter()
_ArrayDisplay($a)

Func _GetDriverEmptyLetter()
        Local $tmp, $i
        For $i = 99 To 121
                $tmp &= Chr($i) & ':|'
        Next
        $tmp &= 'z:'
        Local $Drive = DriveGetDrive('all')
        For $i = 1 To $Drive[0]
                $tmp = StringRegExpReplace($tmp, $Drive[$i] & '\|', '')
        Next
        Return StringSplit($tmp, '|')
EndFunc   ;==>_GetDriverEmptyLetter

评分

参与人数 1金钱 +10 收起 理由
天堂泪吻泪 + 10 这个问题已经很好的解决了!谢谢!

查看全部评分

 楼主| 发表于 2010-2-5 00:35:36 | 显示全部楼层
本帖最后由 天堂泪吻泪 于 2010-2-5 00:50 编辑

回复 4# afan


    正则,晕!!!像http://www.autoitx.com/thread-12844-1-1.html做二层嵌套不可以实现吗??
因为我正在发贴子,所以还没看到你的回复就发了!!!!这样也行!!!!


这的原理就是先用CHR把数字转成字母,用循环把"a:|"到"y:|"分别负值到$tmp变量中,最后才把"z:"负值到$tmp是因为这样做的话,就不会多一个"|"方便用"|"来分数组,StringSplit是个不错的涵数!正则那里还得慢慢研究!!!!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 07:23 , Processed in 0.082012 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表