VB中如何解决这个问题

来源:百度知道 编辑:UC知道 时间:2024/06/23 08:36:05
TmpFileName = UCase$(DeleDir)
For TmpNameNum = 0 To FileExtYesNum
If TmpFileName = FileExtYes(TmpNameNum) Then Exit For
If TmpFileName <> FileExtYes(TmpNameNum)Then GoTo ToDeleteFile
Next

Deledir 是变量.FileExtYes(TmpNameNum)是数组,我两者比较,如果FileExtYes(TmpNameNum)不等于Deledir 就在文件夹中删除deledir这个文件.
但实际运用的时候,假如数组中有 AAA、BBB、CCC 两个值
Deledir的值为AAA时,比较 Deledir和数组第一个元素 相等 退出循环
假如 Deledir的值为BBB时,比较 Deledir和数组第一个元素 不相等,删除BBB. 但实际中,BBB是存在在数组中的.排在第二个元素.

如何解决上面的问题
x = False
TmpFileName = UCase$(DeleDir)
For TmpNameNum = 0 To FileExtYesNum
'If FileExtYes(TmpNameNum) = TmpFileName Then
If TmpFileName = FileExtYes(TmpNameNum) Then Exit For
Next
If TmpFileName = FileExtYes(TmpNameNum) Then x = True
I

你应该这样判断:
TmpFileName = UCase$(DeleDir)
For TmpNameNum = 0 To FileExtYesNum
If TmpFileName = FileExtYes(TmpNameNum) Then Exit For
Next
if TmpNameNum =FileExtYesNum +1 Then GoTo ToDeleteFile
说明:这样判断的好处是,把TmpFileName在数组中遍历了一遍,如果TmpNameNum =FileExtYesNum +1,说明循环完全结果,没有中途退出,因此可以判断TmpFileName在数组中不存在,这样再删除才对。

TmpFileName = UCase$(DeleDir)
For TmpNameNum = 0 To FileExtYesNum
If TmpFileName = FileExtYes(TmpNameNum) Then goto ToSkip
next
GoTo ToDeleteFile
ToSkip :

TmpFileName = UCase$(DeleDir)
For TmpNameNum = 0 To FileExtYesNum
If TmpFileName <> FileExtYes(TmpNameNum)Then GoTo ToDeleteFile
Next
'不要If TmpFileName = FileExtYes(TmpNameNum) Then Exit For 这行不就行了.问题是你是想删了所有不相等的还是只删打到的第一个?如果是想删所有不相等的,那就不能用GoTo ToDeleteFile 因为如GoTo到FOR NEXT循环外面去了,就不能继续比较了.