ページ 11

MakeStrの使い方

Posted: 2008年5月16日(金) 18:50
by PaPa
文字列を数字に変換したいのですがコンパイルでエラーになります。
MakeStrの使い方が違っていますか?

Dim aaa[10] As Byte
Dim bbb As Long
lstrcpy(aaa As VoidPtr, "1234" )
bbb = Val(MakeStr(aaa)) As Long


>Test.sbp(106) - "MakeStr" オーバーロードを解決できません。
>Test.sbp(106) - "MakeStr" 戻り値が存在しないプロシージャです。

Posted: 2008年5月16日(金) 19:31
by PaPa
AB4で試したら動作しました。
AB5での対処方法を教えてください。

Posted: 2008年5月16日(金) 22:26
by konisi
AB5の、どれですか?

このような代償案もあります。(AB5で動く事は確認していませんが・・・)

コード: 全て選択

Declare Function atoi cdecl Lib "msvcrt.dll" (buf As *Byte) As Long
Dim aaa[10] As Byte 
Dim bbb As Long
lstrcpy(aaa As VoidPtr, "1234" )
bbb = atoi(aaa)

Posted: 2008年5月17日(土) 00:07
by イグトランス
いろいろな議論がありましたが,今のところ文字を表すのに使う方はByteではなくSByteになっています(これも決定ではないですが)。
Dim aaa[10] As SByteとすれば現在のAB5でコンパイルできます。

Posted: 2008年5月20日(火) 20:44
by PaPa
SByteにしたらコンパイルできました。
下記もAB4ではOKでAB5では同じエラーになります。

Dim aaa As BytePtr
Dim bbb As Long
aaa = calloc(10)
lstrcpy(aaa , "1234")
bbb = Val(MakeStr(aaa)) As Long

この場合は、どうやってSByteにするのですか?