呼び出し側のデータ型のチェック
Posted: 2006年11月16日(木) 23:58
何時も、お世話に成っています。
文字列を受け取った際、そのデータ型が String型かBytePtr型なのか、
チェックは出来ないのでしょうか?
宜しくお願いします。
文字列を受け取った際、そのデータ型が String型かBytePtr型なのか、
チェックは出来ないのでしょうか?
宜しくお願いします。
コード: 全て選択
Dim str As String, lp As BytePtr
Print Len(str), Len(lp)
コード: 全て選択
Function IsString(ByVal lpString As String) As BOOL
Return TRUE
End Function
Function IsString(ByVal lpString As BytePtr) As BOOL
Return FALSE
End Function
Dim lpStr As BytePtr
Dim strStr As String
Dim bStr As BOOL
bStr=IsString(lpStr)
Debug
bStr=IsString(strStr)
Debug
イグトランス (egtra)様も同様な事、仰っていました。不可能でしょう。…
現状では文字列を保持する型を一つに縛り、
将来的に関数のoverloadで対処するのがよいと思います。
指定変数に格納又は、書き換える場合は、String型、BytePtr型と分けて作るべきなのですね。私だったら,多くのWindows APIの関数がそうであるようにBytePtr型の引数と,その大きさを示す変数を取る関数を作り,
別途String型を受け取る版の関数を作ります。
(GetWindowTextとGetWindowTextStrのように)
コード: 全て選択
test(str) 'String型
test(buf) 'BytePtr型
Sub test(lpStr As BytePtr)
' lpStrが受け取ったデータ型が、String型かBytePtr型なのか知る方法
End Sub