private type fs
fz as vriant
fm as integer
end type
dim sz() as fs
n=gesuo(text1.text) '一个得到字符串内数字和符号个数的函数
redim sz(n) as fs
for i=1 to n
fz.sz(i)=mid(text1.text,i,1)
next i
for i=n to 1 step -1
text2.text=text2.text&fz.sz(i)
next i
请高手指点,哪里错了啊?
系统提示fz.sz(i)末定义,可定义了呀 作者:
Nothing 时间: 2005-11-30 20:21
fz.sz(i)=mid(text1.text,i,1)
上面的用法错了
dim sz() as fs
之后可以这样使用
sz(n).fz=mid(text1.text,i,1) 作者:
tkgg6034 时间: 2005-12-1 10:03
看看动态数组应该定义多大
Public Function gesuo(text As String) As Integer
Dim i, n As Integer
Dim fh As String
n=1
For i = 1 To Len(text)
fh = Mid(text, i, 1)
Select Case fh
Case Is = "+"
n = n + 2
Case Is = "-"
n = n + 2
Case Is = "*"
n = n + 2
Case Is = "/"
n = n + 2
Case Is = "^"
n = n + 2
Case Is = "("
n = n + 2
Case Is = ")"
n = n + 2
End Select
Next i
gesuo = n + 2
End Function
把字符串中的数字给数组
Public Sub tiqu(n As Integer)
n = gesuo(Text1.text)
ReDim sz(n) As fs
Dim xiaosuo, fensuo As Boolean
Dim fh, kong As String
Dim a, b As Integer
a = 1
b = 1
Dim temp, temp1, temp2 As String
For i = 1 To Len(Text1.text)
fh = Mid(Text1.text, i, 1)
If Val(fh) >= 0 And Val(fh) <= 9 Then
temp = temp + fh
If xiaosuo = True Then
b = b * 10
End If
Else: Select Case fh
Case Is = "."
xiaosuo = True
Case Is = ","
temp1 = temp
temp = kong
Case Is = "_"
temp2 = temp
temp = kong
fensuo = True
Case Else
If xiaosuo = True Then
sz(a).fz = Val(temp)
sz(a).fm = b
b = 1
temp = kong
xiaosuo = False
a = a + 1
sz(a).fz = fh
a = a + 1
Else
If fensuo = True Then
sz(a).fz = Val(temp1) * Val(temp) + Val(temp2)
sz(a).fm = Val(temp)
temp = kong
temp1 = kong
temp2 = kong
a = a + 1
sz(a).fz = fh
a = a + 1
Else
sz(a).fz = Val(temp)
sz(a).fm = 1
a = a + 1
sz(a).fz = fh
a = a + 1
End If
End Select
End If
Next i
End Sub 作者:
Nothing 时间: 2005-12-1 11:10
你根踪一下n的值是否正常
另外,数据是从0开始的
for i=1 to n
可以改成
for i=0 to n 作者:
tkgg6034 时间: 2005-12-1 13:06
下标越界是你的n值有问题,也就是说你的n值小于以后数给访问的值,
你用了下面的循环,可能数据不对,注意,数组是从0开始的。
For i = 1 To Len(Text1.text) 作者:
tkgg6034 时间: 2005-12-2 09:13
For i = 1 To Len(Text1.text)
能有什么问题啊
还有就是我在一开始就用option base 1定义了数组下标
问题主要是不能给数组付值,但有的时候能成功,但结果是0
这个问题不解决,下面的工作没法作啊!还望班主再想想法啊 作者:
Nothing 时间: 2005-12-2 11:08
你的程序写的太乱了,后面的代码还少了一个End if 我连分析起来都很难
建议你重写这部份代码。 作者:
Nothing 时间: 2005-12-2 11:17
If Val(fh) >= 0 And Val(fh) <= 9 Then
这句有问题,不论你输入的是什么样的字符,只要不是数字 Val返回的值就是0
例如 Val("-")返回值就是0 作者:
Nothing 时间: 2005-12-2 11:17
If Val(fh) >= 0 And Val(fh) <= 9 Then
这句有问题,不论你输入的是什么样的字符,只要不是数字 Val返回的值就是0
例如 Val("-")返回值就是0
你可以使用这样的
If IsNumeric(fh) Then 作者:
只爱陌生人 时间: 2006-4-13 11:35
在文本框的KeyPress事件里写上以下代码:
If (KeyAscii <> 8 And KeyAscii < 48) Or KeyAscii > 57 Then
KeyAscii = 0
End If
这样就可以使只能在文本框里输入数字。keyascii=8是backspace键。
希望有一点帮助