在bascom中的函数内部使用len函数

时间:2019-08-12 14:54:59

标签: avr bascom

我正在开发一个巨大的代码,我想使用函数将其分解为可读性更高的块,并多次重复使用它们。问题是我应该在所有函数中使用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,124
Bvar = Len(bvar)

它将正常工作。
enter image description here

1 个答案:

答案 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