從文字框(Text box)輸入一正整數,把該數轉換成16進位後,把下列數字顯示在文字標籤(label)上,以下是我的程式 建置一直說我錯誤 可有大大幫我>"<
Dim x, y As Integer, s As String = "ABCDEF", R, k As String
x = tb1.Text
Do While x > 0
y = x \ 16
R = x Mod 16
If R >= 10 Then
R = Mid(s, R - 9, 1)
End If
k = R & k
x = y
Loop
tb2.Text = k
2005-11-29 05:47:55 · 4 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
宣告的地方錯了
不然就是你物件名字下錯
Dim x, y As Integer
Dim s As String
s = "ABCDEF"
Dim R, k As String
x = Text1.Text
Do While x > 0
y = x \ 16
R = x Mod 16
If R >= 10 Then
R = Mid(s, R - 9, 1)
End If
k = R & k
x = y
Loop
Text2.Text = k
2005-11-29 06:12:42 · answer #1 · answered by ? 5 · 0⤊ 0⤋
直接丟到VB,你的錯誤很容易就看出來啦...s as string = "ABCDEF"x = tb1.Text這兩個地方有錯s as string = "ABCDEF" 要分成兩行寫dim s as strings = "ABCDEF"另外小錯在 x = tb1.text原因是 textbox 回傳值為文字...所以你前面最好寫成這樣 val(tb1.text)
2005-11-29 09:16:34 · answer #2 · answered by Anonymous · 0⤊ 0⤋
應該是錯在這一行吧!
Dim x, y As Integer, s As String = "ABCDEF", R, k As String
你可以宣告s是String→Dim s As String 及 s 的長度 →Dim s As String * 255,但不可以直接指定 s 的值→s As String = "ABCDEF"(錯誤), 要指定 s 的值必須像月島大那種作法在程式執行時指定→s = "ABCDEF" 或直接將 s 宣告成常數方法如下:
Const s = "ABCDEF" ' 或 Const s As String = "ABCDEF"
Private Sub Command1_Click()
Dim x, y As Integer, R, k As String
x = tb1.Text
Do While x > 0
y = x \ 16
R = x Mod 16
If R >= 10 Then
R = Mid(s, R - 9, 1)
End If
k = R & k
x = y
Loop
tb2.Text = k
End Sub
試試看吧!!
2005-11-29 08:26:05 · answer #3 · answered by W.J.S. 7 · 0⤊ 0⤋
乍看知下,程式是沒錯啦,不知道你說的「有錯」是怎樣? 來個錯誤訊息看看吧。
有幾個地方可以參考看看:
◆ Dim 的方法:
在 VB6 裡 Dim x, y As Integer,
這樣只有 y 會是 Integer x 的資料型態會是 Variable,
VB6 要 Dim 變數,最好是乖乖的一行一行 Dim。
如果一定要合併,那就要這樣寫:
Dim x As Integer, y As Integer
◆ 資料型態的控制
tb1.Text 應該是字串型態,
當 x = tb1.Text 的時候,因為 x 是 Variable 的型態(照你原本的 Dim 的狀況來看),
所以 VB6 很貼心的自動把 tb1.Text 的值轉變成 Variable 型態存在 x 裡。
建議資料的型別轉換,自己動手來:
x = Int(tb1.Text)
而 R 的角色就有點怪了,在 R = x Mod 16 跟 R = Mid(s, R - 9, 1) 時,
R 是當數字用,但是在 k = R & k 時,卻又要 String 用。
▼ 其它:
程式看起來 y 只是單純的存放 x \ 16 的結果,而 x 也沒用到別的運算,
y 顯得有點多餘的感覺,可以考慮這樣寫
R = x Mod 16
x = x \ 16
y 可以不用 Dim,而最後面 x = y 就可以省了。
◆ 我的寫法:
Dim x As Integer
Dim R As Integer
Dim s As String
Dim k As String = ""
x = Int(tb1.Text)
s = "0123456789ABCDE"
Do While x > 0
R = x Mod 16
k = Mid(s, R, 1) & k
' 這樣不管 R 是否 >=10 ,在 s 裡都能 Mid 到,直接就接到 k 前面。
' R 很單純就是 Integer,而不會卡在 Integer 跟 String 間。
x = x \ 16
Loop
tb2.Text = k
◆ 月島大說的也是,搞不好根本就是物件名稱有錯。
2005-11-29 06:38:15 · answer #4 · answered by Ike 3 · 0⤊ 0⤋