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

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

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

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

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

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

```vb

For i 1 to 3

RunApp "Notepad.exe"

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

Loop while (Hwnd0)

Do

If stext i Then

Exit Do

End If

Call (hwnd,i)

stext (hwnd)

Loop

```

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

```vb

For i 1 to 3

RunApp "Notepad.exe"

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

Loop While (Hwnd 0)

Do

If cint(stext) i Then

Exit Do

End If

Call (hwnd,i)

stext (hwnd)

Loop

```

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

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

```vb

call Lib.大漠注冊(cè).register()

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

If cint(s) > 2000 Then

MessageBox "金額超出"

End If

```

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

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

```vb

call Lib.大漠注冊(cè).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號(hào)坑:變量類型不匹配導(dǎo)致的奇怪比較結(jié)果

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

```vb

Dim 數(shù)組(1)

數(shù)組(1) 1

S "2"

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

MessageBox "啥?這也能比較?"

End If

```

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

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

標(biāo)簽: