其实就是我要排列由所有数字及字母可能的十位组合。。从0000000000到ZZZZZZZZZZ。其实我已经VB编写好了。理论上来说没问题。但是一运行很短一段时间,只看到CPU使用率快速上升。。然后就是程序无响应了。这个要怎么解决啊。由于篇幅限制只能用三组代替,十组也类似。如果运行排序到opq就跳到happy处显示OK表示已经排到了opq。主要是解决程序无响应的问题。有没有好的方法啊
Private Sub Command1_Click()
Command1.Enabled = False
Dim sz1(1 To 36), sz2(1 To 36), sz3(1 To 36) As String
dim abc as string
sz1(1) = "0"
sz1(2) = "1"
sz1(3) = "2"
sz1(4) = "3"
sz1(5) = "4"
sz1(6) = "5"
sz1(7) = "6"
sz1(8) = "7"
sz1(9) = "8"
sz1(10) = "9"
sz1(11) = "a"
sz1(12) = "b"
sz1(13) = "c"
sz1(14) = "d"
sz1(15) = "e"
sz1(16) = "f"
sz1(17) = "g"
sz1(18) = "h"
sz1(19) = "i"
sz1(20) = "j"
sz1(21) = "k"
sz1(22) = "l"
sz1(23) = "m"
sz1(24) = "n"
sz1(25) = "o"
sz1(26) = "p"
sz1(27) = "q"
sz1(28) = "r"
sz1(29) = "s"
sz1(30) = "t"
sz1(31) = "u"
sz1(32) = "v"
sz1(33) = "w"
sz1(34) = "x"
sz1(35) = "y"
sz1(36) = "z"
sz2(1) = "0"
sz2(2) = "1"
sz2(3) = "2"
sz2(4) = "3"
sz2(5) = "4"
sz2(6) = "5"
sz2(7) = "6"
sz2(8) = "7"
sz2(9) = "8"
sz2(10) = "9"
sz2(11) = "a"
sz2(12) = "b"
sz2(13) = "c"
sz2(14) = "d"
sz2(15) = "e"
sz2(16) = "f"
sz2(17) = "g"
sz2(18) = "h"
sz2(19) = "i"
sz2(20) = "j"
sz2(21) = "k"
sz2(22) = "l"
sz2(23) = "m"
sz2(24) = "n"
sz2(25) = "o"
sz2(26) = "p"
sz2(27) = "q"
sz2(28) = "r"
sz2(29) = "s"
sz2(30) = "t"
sz2(31) = "u"
sz2(32) = "v"
sz2(33) = "w"
sz2(34) = "x"
sz2(35) = "y"
sz2(36) = "z"
sz3(1) = "0"
sz3(2) = "1"
sz3(3) = "2"
sz3(4) = "3"
sz3(5) = "4"
sz3(6) = "5"
sz3(7) = "6"
sz3(8) = "7"
sz3(9) = "8"
sz3(10) = "9"
sz3(11) = "a"
sz3(12) = "b"
sz3(13) = "c"
sz3(14) = "d"
sz3(15) = "e"
sz3(16) = "f"
sz3(17) = "g"
sz3(18) = "h"
sz3(19) = "i"
sz3(20) = "j"
sz3(21) = "k"
sz3(22) = "l"
sz3(23) = "m"
sz3(24) = "n"
sz3(25) = "o"
sz3(26) = "p"
sz3(27) = "q"
sz3(28) = "r"
sz3(29) = "s"
sz3(30) = "t"
sz3(31) = "u"
sz3(32) = "v"
sz3(33) = "w"
sz3(34) = "x"
sz3(35) = "y"
sz3(36) = "z"
For K = 1 To 36
For l = 1 To 36
For m = 1 To 36
abc = sz1(K) & sz2(l) & sz3(m)
If abc = "opq" Then GoTo happy
Next m
Next l
Next K
happy:
Label1.Caption = "ok"
Command1.Enabled = True
End Sub
Private Sub Command1_Click()
Command1.Enabled = False
Dim sz1(1 To 36), sz2(1 To 36), sz3(1 To 36) As String
dim abc as string
sz1(1) = "0"
sz1(2) = "1"
sz1(3) = "2"
sz1(4) = "3"
sz1(5) = "4"
sz1(6) = "5"
sz1(7) = "6"
sz1(8) = "7"
sz1(9) = "8"
sz1(10) = "9"
sz1(11) = "a"
sz1(12) = "b"
sz1(13) = "c"
sz1(14) = "d"
sz1(15) = "e"
sz1(16) = "f"
sz1(17) = "g"
sz1(18) = "h"
sz1(19) = "i"
sz1(20) = "j"
sz1(21) = "k"
sz1(22) = "l"
sz1(23) = "m"
sz1(24) = "n"
sz1(25) = "o"
sz1(26) = "p"
sz1(27) = "q"
sz1(28) = "r"
sz1(29) = "s"
sz1(30) = "t"
sz1(31) = "u"
sz1(32) = "v"
sz1(33) = "w"
sz1(34) = "x"
sz1(35) = "y"
sz1(36) = "z"
sz2(1) = "0"
sz2(2) = "1"
sz2(3) = "2"
sz2(4) = "3"
sz2(5) = "4"
sz2(6) = "5"
sz2(7) = "6"
sz2(8) = "7"
sz2(9) = "8"
sz2(10) = "9"
sz2(11) = "a"
sz2(12) = "b"
sz2(13) = "c"
sz2(14) = "d"
sz2(15) = "e"
sz2(16) = "f"
sz2(17) = "g"
sz2(18) = "h"
sz2(19) = "i"
sz2(20) = "j"
sz2(21) = "k"
sz2(22) = "l"
sz2(23) = "m"
sz2(24) = "n"
sz2(25) = "o"
sz2(26) = "p"
sz2(27) = "q"
sz2(28) = "r"
sz2(29) = "s"
sz2(30) = "t"
sz2(31) = "u"
sz2(32) = "v"
sz2(33) = "w"
sz2(34) = "x"
sz2(35) = "y"
sz2(36) = "z"
sz3(1) = "0"
sz3(2) = "1"
sz3(3) = "2"
sz3(4) = "3"
sz3(5) = "4"
sz3(6) = "5"
sz3(7) = "6"
sz3(8) = "7"
sz3(9) = "8"
sz3(10) = "9"
sz3(11) = "a"
sz3(12) = "b"
sz3(13) = "c"
sz3(14) = "d"
sz3(15) = "e"
sz3(16) = "f"
sz3(17) = "g"
sz3(18) = "h"
sz3(19) = "i"
sz3(20) = "j"
sz3(21) = "k"
sz3(22) = "l"
sz3(23) = "m"
sz3(24) = "n"
sz3(25) = "o"
sz3(26) = "p"
sz3(27) = "q"
sz3(28) = "r"
sz3(29) = "s"
sz3(30) = "t"
sz3(31) = "u"
sz3(32) = "v"
sz3(33) = "w"
sz3(34) = "x"
sz3(35) = "y"
sz3(36) = "z"
For K = 1 To 36
For l = 1 To 36
For m = 1 To 36
abc = sz1(K) & sz2(l) & sz3(m)
If abc = "opq" Then GoTo happy
Next m
Next l
Next K
happy:
Label1.Caption = "ok"
Command1.Enabled = True
End Sub
2、程序中使用DoEvents交出控制权
For l = 1 To 36
For m = 1 To 36
If K = 25 Then
If l = 26 Then
If k = 27 Then GoTo happy
End If
End If
DoEvents Next m
Next l
Next KLabel1.Caption = sz1(K) & sz2(l) & sz3(m)
DyCOMHelper可以到这个链接下载
http://topic.csdn.net/u/20101122/12/9f2a4da0-3010-445a-a33b-7389430f1c87.html?57704
优点是不生成临时字符串,所有的比较时基于Asc码的。Private Sub Command1_Click()
Command1.Enabled = False
Dim sz1() As Integer
Dim sz2() As Integer
Dim sz3() As Integer
Dim oArOwner1 As DyComHelperType.ArrayOwner
Dim oArOwner2 As DyComHelperType.ArrayOwner
Dim oArOwner3 As DyComHelperType.ArrayOwner
Dim s1 As String
Dim intO As Integer
Dim intP As Integer
Dim intQ As Integers1 = "0123456789abcdefghijklmnopqrstuvwxyz"
Set oArOwner1 = g.Helper.NewArrayOwner(VarPtrArray(sz1), 2, 36, StrPtr(s1))
'//将数组sz1的指针指向 s1字符串的数据地址,获取0-35位的数组
'//这样可以按照数组来遍历字符串的ASC码
Set oArOwner2 = g.Helper.NewArrayOwner(VarPtrArray(sz2), 2, 36, StrPtr(s1))
Set oArOwner3 = g.Helper.NewArrayOwner(VarPtrArray(sz3), 2, 36, StrPtr(s1))
intO = Asc("o")
intP = Asc("p")
intQ = Asc("q")For K = 0 To 35
For l = 0 To 35
For m = 0 To 35
If sz1(K) = intO Then
DoEvents
If sz2(l) = intP Then
If sz3(m) = intQ Then
GoTo happy
End If
End If
End If
Next m
Next l
Next K
happy:
Label1.Caption = "ok"
Command1.Enabled = True
End Sub
'36^10=3656158440062976
'3,656,158,440,062,976
' P T G M K