諏訪通信ネットワーク
スポンサードリンク
製品情報 ダウンロード サポート お知らせ
   


ソフトウェア

for Windows
Xp Vista 7 10

Keyboard IE
カーナビを...
ダイアグスキャナー
徒歩メーター
燃費ティーチャー

サンプリングメーター
みるCAN
CANメッセンジャー
CANレコーダー
CANレーベル



コーヒーブレイク

VB6の長所と短所
なぜVB6を使うのか
VB6のトラブル集1
VB6のトラブル集2
UWPのトラブル集1



蓼科電研














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-2019 SUWA TSUSHIN NETWORK. All Rights Reserved.
ご利用条件