成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

腳本開發(fā)教程:解決“類型不匹配”問題的三個深坑

在編寫腳本的過程中,經(jīng)常會遇到“類型不匹配”這樣的錯誤提示。無論是瞇著眼睛找、斜著眼睛找,似乎都無法找到錯誤在哪里。為了幫助大家更好地理解并解決這個問題,我將分享曾經(jīng)困擾過我的三個“類型不匹配”深坑,

在編寫腳本的過程中,經(jīng)常會遇到“類型不匹配”這樣的錯誤提示。無論是瞇著眼睛找、斜著眼睛找,似乎都無法找到錯誤在哪里。為了幫助大家更好地理解并解決這個問題,我將分享曾經(jīng)困擾過我的三個“類型不匹配”深坑,以及造成這些深坑的原因。如果你已經(jīng)知道這些,可以加深下印象;如果還沒有遇到過,那就看一看,防范于未然。

11號坑:變量類型不同導(dǎo)致的無限循環(huán)

讓我們來看一個例子,我們想要打開三個記事本,并分別將它們的窗口標(biāo)題命名為1、2、3。然而,運行結(jié)果卻只打開了一個記事本,后續(xù)的操作似乎消失了。

```vb

For i 1 to 3

RunApp "Notepad.exe"

hwnd (0, "無標(biāo)題 - 記事本") '獲取記事本句柄

Loop while (Hwnd0)

Do

If stext i Then

Exit Do

End If

Call (hwnd,i)

stext (hwnd)

Loop

```

這個問題的根源是`stext i`這句代碼。`stext`是獲取窗口標(biāo)題命令的返回值,是字符串型;而`i`是整型。不同類型的變量是不能直接進(jìn)行比較的。因此,字符串`stext`不等于整型`i`,不滿足判斷條件,就進(jìn)入了無限循環(huán),重復(fù)地修改第一個打開的記事本的窗口標(biāo)題。正確的寫法應(yīng)該是:

```vb

For i 1 to 3

RunApp "Notepad.exe"

hwnd (0, "無標(biāo)題 - 記事本") '獲取記事本句柄

Loop While (Hwnd 0)

Do

If cint(stext) i Then

Exit Do

End If

Call (hwnd,i)

stext (hwnd)

Loop

```

42號坑:轉(zhuǎn)換類型失敗導(dǎo)致的錯誤

現(xiàn)在假設(shè)我們想要使用大漠插件的找字功能,在游戲中找到一個數(shù)字,并判斷該數(shù)字的大小。

```vb

call Lib.大漠注冊.register()

s dm.Ocr(0,0,2000,2000,"9f2e3f-030303",1.0)

If cint(s) > 2000 Then

MessageBox "金額超出"

End If

```

我們首先調(diào)用了大漠插件的注冊命令庫,并且將獲得的數(shù)據(jù)存放在變量`s`中。小編已經(jīng)學(xué)乖了,將字符串變量`s`轉(zhuǎn)換成了整型。然而,為什么還是報錯“類型不匹配:CINT”呢?

問題出在`cint(s)`這里。當(dāng)我們輸出變量`s`時,會發(fā)現(xiàn)它實際上是一個空值。即使找字沒有找到相應(yīng)的數(shù)字,函數(shù)仍然會返回一個空值。而`cint`函數(shù)無法將空值轉(zhuǎn)換成整型。因此,我們需要先判斷是否找到了數(shù)字,再進(jìn)行類型轉(zhuǎn)換:

```vb

call Lib.大漠注冊.register()

s dm.Ocr(0,0,2000,2000,"9f2e3f-030303",1.0)

If s <> "" Then

If cint(s) > 2000 Then

MessageBox "金額超出"

End If

End If

```

73號坑:變量類型不匹配導(dǎo)致的奇怪比較結(jié)果

第三個坑與第一個坑非常相似,都涉及到了變量類型不一致所導(dǎo)致的問題。但是,這個坑更加隱蔽。

```vb

Dim 數(shù)組(1)

數(shù)組(1) 1

S "2"

If 數(shù)組(1) < S Then

MessageBox "啥?這也能比較?"

End If

```

由于時間過去已久,我已經(jīng)找不到原來的代碼例子,所以用了這個簡化的例子來說明。在原來的代碼中,變量`s`保存了我獲取到的數(shù)據(jù),我一直認(rèn)為這個數(shù)據(jù)是整型的,所以沒有進(jìn)行類型轉(zhuǎn)換。然而,實際上它是字符串型。如果強(qiáng)行將字符串型變量和整型變量進(jìn)行比較,它們會按照一種奇怪的規(guī)則進(jìn)行比較。無論數(shù)組(1)中是1還是10000,`數(shù)組(1) < S`的判斷結(jié)果都是真。這句判斷欺騙了我多少次,甚至讓我懷疑其他的代碼。經(jīng)過一番艱苦的排查之后,我才意識到這個問題,讓一個愛笑的小編從此失去了笑容。

以上就是三個常見“類型不匹配”問題的解析和解決方法。希望對大家有所幫助,避免掉入這些深坑。編寫腳本時,注意變量類型的匹配和轉(zhuǎn)換,可以提高腳本的穩(wěn)定性和效率。

標(biāo)簽: