ab.com コミュニティ https://www.activebasic.com/forum/ |
|
引数に関数などを書くと https://www.activebasic.com/forum/viewtopic.php?t=1612 |
ページ 1 / 1 |
作成者: | MML [ 2006年10月10日(火) 09:06 ] |
記事の件名: | 引数に関数などを書くと |
VerはActiveBasic 5(CP3)です。 以下のコードを打つと、エラーがでます。 これは4やCP1では起こりませんでした。なぜですか? コード: MsgBox hMainWnd,"hMainWnd = "+Str$(hMainWnd)でなぜかコンパイルエラーになってしまいます。。 CP2でも起こりました。 |
作成者: | konisi [ 2006年10月10日(火) 18:53 ] |
記事の件名: | |
String型の定義が変更されたことによるエラーの一つに「固定文字列+String型の演算結果をString型に代入できない」と言う内容のものがあったと思うのですが・・・。 どうでしたっけ? 追記(最終改変:19時20分) AB5の開発者バージョンの一つのβ3での話でした。β3はCP1より後、CP2より前に一部に発表されています。引用すると こんなことがありました。 [ここをクリックすると内容が表示されます] これは演算に対する返り値の話ですが、おそらくこれとほぼ同じ事が関数への引数に対して起こっているものかと思います。
(省略されている)
引用: 定数的文字列同士の加算(?)が出来ません。
コード: Dim A$ As String A$="test"+"ahya" 引用: 【"test"+"123" などのLPSTR型のポインタ同士をStringオブジェクトとして認識しない】 (ちなみに、CP3の一般公開の前にβ5が一部に発表されている。)演算子オーバーロードの特性上、+演算子から見て左の項にString型オブジェクトがなければなりません。となると、最悪 "test" + StrObj などの演算が行えなくなるのでは!?といった問題が生じますが、β4では要求値がStringオブジェクトの場合は文字列リテラルをStringオブジェクトとして扱うようにしようかと考えています。 ようは、下記のようなケースでリテラル文字列とリテラルStringオブジェクトを識別していこうという考えです。 コード: Dim obj As String obj="test"+"123" '"test" 及び "123" をString型オブジェクトとして扱う コード: Dim buffer As LPSTR buffer="test123" '"test123" をリテラル文字列として扱う因みに、ここで言うリテラル文字列とは、プロセスメモリ内に用意されるByte型配列データへのポインタになります。当然ながら、Stringオブジェクトは処理にオーバーヘッドを伴うので、高速文字列処理が必要なときはLPSTRやリテラル文字列を扱うことで回避できると考えています。 |
作成者: | situmon [ 2006年10月10日(火) 19:26 ] |
記事の件名: | |
どのようなエラー内容ですか? こちらで試しましたが、警告こそ出ますが、エラーは出ませんでした。(厳密な型チェック有効時) もし、警告のことを指しているならば、 コード: MsgBox hMainWnd,"hMainWnd = "+Str$(hMainWnd)このコードを コード: MsgBox hMainWnd,"hMainWnd = "+Str$(hMainWnd As Double)このように型をキャストしてやることで、警告を抑えられます。 的外れだったらすみません。 |
作成者: | konisi [ 2006年10月10日(火) 20:56 ] |
記事の件名: | |
あ、ほんとだ。エラー出ないや。←未確認だった。 |
作成者: | MML [ 2006年10月15日(日) 14:40 ] |
記事の件名: | |
> コード: MsgBox hMainWnd,"hMainWnd = "+Str$(hMainWnd As Double) >あ、、出ませんね。。。 知りませんでした。ありがとうございました。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |