こんにちは、OverTakerです。
KICOさんの察した通り、Stringの仕様が変更になったため、このようなことが起こります。
コード:
Dim str As String
Dim size As Long
str = ZeroString(20)
size = GetDWord(str - SizeOf(DWord))
このコードはちょっと意外ですね。以前String型は、文字列の先頭の前にサイズを表していたので、このような荒技的なコードが使用できました。
しかし、現在は
Wikiで見ると分かりますが、String型はコンパイラ定義ではなく、Stringクラスとして、ライブラリで提供されるようになりました。これにより、以前とは違ったStringクラスとなりましたので、その方法は使用できません。
文字列のサイズを取得する方法としては、以下の方法があります。
コード:
#console
Dim s As String
s = "ActiveBasic"
Print Len(s)
Print lstrlen(s)
Print s.Length
Sleep(1000)
他にもあるかもしれませんが、一番下のやり方はStringクラスで使用することができます。上の2つは、以前のコンパイラでも使用することができます。
現在のStringクラスはまだ完全ではありませんので、s.Lengthに値が書き込めてしまうのですが、誤作動を起こすのでそのようなコードは書かないようにしてください。