我正在开发一个巨大的代码,我想使用函数将其分解为可读性更高的块,并多次重复使用它们。问题是我应该在所有函数中使用len函数,而Bascom似乎有一些问题。这是我的示例代码,其中完全包含该问题:
Declare Function Getlen(byval Str1 As String) As word
Dim Bvar As Byte
Bvar ="hello"
Do
Bvar =Getlen(bvar)
Bvar = Len(bvar)
Loop
End
Function Getlen(byval Str1 As String) As Word
Getlen = Len(str1)
End Function
这是我从Bascom编译器得到的错误 当我使用
时,在函数调用行上出现错误71,242,124Bvar = Len(bvar)
答案 0 :(得分:1)
您混合了数据类型。字节Bvar无法保存字符串hello。并且您的Function应该声明为Byte,而不是Word。在Bascom Simulator中尝试以下示例:
$regfile = "m8def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 64
$swstack = 0
$framesize = 64
Declare Function Getlen(byval Str1 As String) As Byte
Dim Mylen As Byte
Dim Mystring As String * 10 : Mystring = "hello"
Print Mystring
Mylen = Getlen(mystring)
Print "Mylen=" ; Mylen
Do
Input "Enter any name: " , Mystring
Mylen = Getlen(mystring)
Print "Mylen=" ; Mylen
Loop
Function Getlen(byval Str1 As String) As Byte
Getlen = Len(str1)
End Function