初歩質問ですが$について・・・・


初心者  2004-01-23 22:53:15  No: 81702  IP: [192.*.*.*]

初歩質問です。
ヘルプで調べたけkk田を見てもわからず
ここのみなさんでしたらいつもとても詳しく説明してくださっているので
書込しました。
命令文についている「$」はなんの意味があるのでしょう?
前の方の書き込みをみて疑問におもいました。
お願いします

編集    削除
はな  2004-01-23 23:19:12  No: 81703  IP: [192.*.*.*]

$をつけると処理速度が多少速くなるのです。

編集    削除
Say  2004-01-23 23:21:36  No: 81704  IP: [192.*.*.*]

関数につく$と変数につく$では実現の仕方に違いがありますが、
どちらも文字列型であることを示している点では同じです。

変数を文字列型で宣言/定義するには
Dim foo As String とする方法

Dim foo$            とする方法

さらに
DefStr F
Dim foo      などとする方法がありますが、

推奨は最初の方法です。
速度的には後のほうが速い、と言われています。

編集    削除
はな  2004-01-23 23:21:46  No: 81705  IP: [192.*.*.*]

<他参考ページ>
http://www3.plala.or.jp/sardonyx/smart/vb/var/3.html

編集    削除
魔界の仮面弁士  2004-01-23 23:34:26  No: 81706  IP: [192.*.*.*]

コード中の$記号には、2種類の意味があります。
一つは「型宣言文字」の意味。もう一つは「文字列関数名の一部」の意味です。

例えば前者に関しては、
  Dim S As String
は、
  Dim S$
と書く事ができます。これが前者の「型宣言文字」です。
(他にも、&, %, #, !, @などといった記号があります)


一方、後者に関しては、
  Format$関数、Hex$関数、
  Chr$関数、ChrB$関数、ChrW$関数
  Left$ 関数、LeftB$関数、
  Right$ 関数、LeftB$関数
…などがあります。今回の質問の意味は、こちらでしょうね。

この場合の$は、型宣言を意味しているわけではなく、
$までを含めて、一つの関数名となっています。

で。$付き関数は『String型を返す関数』です。一方、同名の$無し関数は、
『内部形式 String の Variant型を返す関数』となっています。

通常、これらの差を感じる場面は少ないでしょうが、例えば、
『Debug.Print Hex(Null)』はエラーにならずに実行できますが、
『Debug.Print Hex$(Null)』だと [Nullの使い方が不正です]と
怒られる…という違いや、実行速度の僅かな差などがあります。


注意しなければいけないのは、「文字列型を返す関数」の全てが
$付きバージョンを持っているというわけではない、という事です。

例えば、『内部形式 String の Variant型を返す関数』の一つに
Partition関数という物がありますが、これを $付きで呼び出した場合、
エラーが返される事になります。

編集    削除