それはつまりver5以降のActiveBasicはver4以前のコードとの上位互換性を破棄するという開発者サイドの暗黙的な意思表明とうけとめてよろしいか。
少し補足します。
互換性の面で「多少問題」があるというのは
スレッドの機能を一体どれだけの人が使用しているのかという点と、
沢山いるなら変更できませんが、一般的なプログラミングでスレッドを
多用することはありませんし、そもそも使用しないだろうという点につきます。
スレッドを使ったことがある方なら気付いていると思いますが、
lpThreadAttributesパラメータは現在のABの定義では
ByRef指定になっています。
これではByVal NULLという回りくどい指定が必要となります。
また、lpThreadId パラメータはNULLを渡して
値を省略してはいけない仕様になっているため
態々スレッドを作成するためにVarPtr(idThread)のように
アドレスを渡す必要がなくなります。
コード: 全て選択
Dim Id As DWord
CreateThread(ByVal NULL, 0, AddressOf(Thread), NULL, 0, VarPtr(Id))
コード: 全て選択
Dim Id As DWord
CreateThread(NULL, 0, AddressOf(Thread), NULL, 0, Id)
ゲストさんの仰るように「互換性」も大事ですが、
私は上と下を比べた時、下の方が効率的なコーディングができると思いますし、
初心者にも分かり易いと思うのですが如何でしょう?
[quote]それはつまりver5以降のActiveBasicはver4以前のコードとの上位互換性を破棄するという開発者サイドの暗黙的な意思表明とうけとめてよろしいか。[/quote]
少し補足します。
互換性の面で「多少問題」があるというのは
スレッドの機能を一体どれだけの人が使用しているのかという点と、
沢山いるなら変更できませんが、一般的なプログラミングでスレッドを
多用することはありませんし、そもそも使用しないだろうという点につきます。
スレッドを使ったことがある方なら気付いていると思いますが、
lpThreadAttributesパラメータは現在のABの定義では
ByRef指定になっています。
これではByVal NULLという回りくどい指定が必要となります。
また、lpThreadId パラメータはNULLを渡して
値を省略してはいけない仕様になっているため
態々スレッドを作成するためにVarPtr(idThread)のように
アドレスを渡す必要がなくなります。
[code]Dim Id As DWord
CreateThread(ByVal NULL, 0, AddressOf(Thread), NULL, 0, VarPtr(Id))[/code]
[code]Dim Id As DWord
CreateThread(NULL, 0, AddressOf(Thread), NULL, 0, Id)[/code]
ゲストさんの仰るように「互換性」も大事ですが、
私は上と下を比べた時、下の方が効率的なコーディングができると思いますし、
初心者にも分かり易いと思うのですが如何でしょう?