9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VB6.0からJAVAに移行する際の注意点

Posted at

##はじめに
この記事では、VB6.0からjavaに移行する際に、私がはまったところ、苦労した所を書いていきます。

###文字列を抜き出し(Left)
VB6.0では10文字入った変数の11文字目を取る処理を書いてもエラーになりません。(0~11文字目を取得する処理の場合0~10文字目までが取れます。)
そのため、javaに移行する処理通り書いてしまうと文字数チェックエラー(StringIndexOutOfBoundsException)が出てしまう可能性があります。
そのため、文字列を抜き出す前に、文字数チェックを入れることでエラーを回避することができます。

VBソース

'abcが入ります。
test = Left("abc", 4)

javaソース


test = "abc";

if (test.length() >= 4) {
  // 4文字以上の場合は4文字までtest2に入れる
  test2 = test.substring(0, 4);
} else {
  // 4文字未満の場合そのまま入れる
  test2 = test;
}

##LenB
LenBとは、指定された文字列の半角文字を1バイト、全角文字を2バイトとして計算し、バイト数の合計を返します。
javaで上記のような、対応するには文字列を「Shift_JIS」コードに変えて、合計バイト数を取ることによりLenBと同じ実装ができます。

文字コードのバイト数について
別サイト様リンク

##ソースコードを読む点での注意点
VB6.0を使っていた時代は、処理の先頭で処理内で、使う変数を全部宣言することが多いです。
そのため、宣言していても実際使われてない変数があったり、かなり奥のほうで密かに使われてたりする事があります。(私の入った案件だけかもしれませんが。。。)
また、VB6.0のコントロールと現在のVB.NETのコントロールで動きは同じだけど、名称が違うものがいくつかあります。

VB6.0、VB.NETコントロールの名称の違い
別サイト様リンク

##最後に
移行前のソースコードを読んだとき、何でこんな無駄な処理を入れているのか、なぜ昔あったメソッドが現在無くなってしまったのかなど、疑問に思うことが多いと思いますが、その処理やメソッドが昔に使わないといけなかった理由を調べると、プログラマーの歴史に触れられたようです楽しいので、移行で少し疲れたら気分転換に調べて見るといいかもしれません。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?