for Windows Xp Vista 7 10 Keyboard IE カーナビを... ダイアグスキャナー 徒歩メーター 燃費ティーチャー サンプリングメーター みるCAN CANメッセンジャー CANレコーダー CANレーベル VB6の長所と短所 なぜVB6を使うのか VB6のトラブル集1 VB6のトラブル集2 UWPのトラブル集1 C言語のコメント作法 C言語の常識ルール クルマ整備技術サイト |
||
|
||
VB6の長所と短所 Visual BASIC 6.0 の特徴についてまとめてみました。 1.VB6の長所 (1) コントロール配列 複数のボタンやテキストボックスを配列として扱うことができる機能です。 残念なことにVisual BASIC .NETでは廃止されてしまった機能です。 複数のテキストボックスから値を取得したいとき Visual BASIC .NET などでは、 Array(0) = TextBox1.Text Array(1) = TextBox2.Text Array(2) = TextBox3.Text ・ ・ ・ と書くのが普通です。 しかし、Visual BASIC 6.0 では、 Array(0) = TextBox(0).Text Array(1) = TextBox(1).Text Array(2) = TextBox(2).Text ・ ・ ・ と書くこともできます。 もちろん、 i = 0 Do while i < 100 Array(i) = TextBox(i).Text i = i + 1 Loop と書けば大幅なコーディングの削減ができます。 さらにコントロール配列では嬉しい機能があります。 複数のテキストボックスをフォーム上に配置する場合、すでに配置したテキストボックスをコピーしてペーストすれば、自動的にカウントアップされた添え字が割り当てられて貼り付けることができます。ペーストを繰り返せばその都度カウントアップされた添え字が割り当てられます。 例えば100個のテキストボックスを貼り付けて運用しようとした場合、Visual BASIC .NET などでは1つ1つに名前を割り当てる必要があり、実際にやってみると想像以上に疲れます。名前を変更するときにタイプミスをして、その作業が終わったときにエラーが出てしまうと心が折れそうになります。しかしVisual BASIC 6.0では、例えば TextBox(0)〜TextBox(9) までの10個のテキストボックスをコピーして貼り付ければ、自動的に TextBox(10)〜TextBox(19) となります。さらにペーストを繰り返せば、 TextBox(20)〜TextBox(29) 、 TextBox(30)〜TextBox(39) ・・・ といったように貼り付けることができるため、非常に便利です。 この便利さだけでも、Visual BASIC 6.0 を使う価値は十分にあります。 (2) Windoiws2000などの古い資産が使える Windoiws2000は、かなり昔にMicrosoftでのサポートが終了したOSです。 ここで重要なのは、あくまでもサポートが終了したのみで、使用期限が切れた訳ではないということです。例えばファミコンやスーパーファミコンのサポートは2007年頃に終了しましたが、今でも普通に遊ぶことができます。Windoiws2000も同様に、普通に使うことができます。セキュリティソフトの対応からも外れてるため、インターネットを使うにはセキュリティ上の懸念がありますが、オフラインで特定のソフトウェアのみを使うのであれば何の問題もないのです。 Windoiws2000は .NET Framework2.0に対応していますが、4.0は非対応です。 .NET Frameworkは起動時にJITコンパイルが発生するため、Windoiws2000がインストールされているパソコンのスペックでは起動に時間が掛かる問題があります。 Visual BASIC 6.0であればビルド時にネイティブコンパイルが可能なため、起動時にフリーズしたような感じになることもありません。 2.VB6の短所 Visual BASIC 6.0 は、古い言語であるため様々な短所もあります。 利点のみ挙げていてもズルいと思いますので、あえて短所も挙げてみます。 細かい部分を挙げるとキリがありませんが、最も致命的で代表的な短所を3つ挙げます。 (1) スレッド処理ができない Visual BASIC .NET (Framework4.0)では、 ・BackgroundWorkerクラス ・System.Threading.Threadクラス のいずれかでマルチスレッド処理ができます。 双方のクラスは動作の挙動が微妙に異なるため、処理に合わせて併用することも可能です。 他には複数のフォームで別々に処理するようなコーディングをしたときも、マルチスレッドのように処理されるようです。 Visual BASIC 6.0は、BackgroundWorkerクラスはもちろんSystem.Threading.Threadクラスも使用できません。似たような仕組みもありません。 複数のフォームで別々に処理しようとしても、再描画などで1つのフォームの処理が中断するような場合は他のフォームの処理も止まってしまいます。 現在のパソコンのCPUはマルチコアで処理を分散することを前提としているので、この機能が使えないのはかなり痛いです。 ちなみに、BackgroundWorkerとSystem.Threading.Threadとの違いですが、 .NET Frameworkのバージョンによっても挙動が異なるかもしれませんが、当方が調べた限りでは小さなスレッドを頻繁に発生させるような場合は BackgroundWorker、 大きな処理やアプリケーションの本処理として常にBackGroundで動作するようなスレッドにはSystem.Threading.Thread が向いているようです。 (2) StringBuilder クラスが未サポート Visual BASIC という言語を今でも使う最大のメリットは、文字列処理の容易さであると思います。 しかしVisual BASIC 6.0 では、StringBuilder がサポートされていません。 文字列処理では必須の機能ですが、Visual BASIC 6.0 では使用できないため、文字列の結合での高速な処理は望めません。工夫すれば似たようなことはできますが、本家StringBuilder ほどの効果は得られないようです。 (3) Integer型が16ビット OSとCPUが32bit系ですので、Integer型を使用したときに16bit分が無駄になります。その都度16bitを32bitに置き換えて処理をするため、Long型と比べて処理が遅くなるようです。今時はメモリ容量を気にしてコーディングする必要がないため、Integer型は使えない型といえます。ちなみにbyte型は通信処理との親和性のために必要です。 2015.7.9 |
Copyright (C)1999-2024 SUWA TSUSHIN NETWORK. All Rights Reserved. |
ご利用条件 |