A(999) As LongとB(999) As Longの内容が一致しているか
比較したいのですが、For文でループを回してIf文でチェック
する以外に一括で比較する方法はあるのでしょうか
(Cでのmemcmp関数みたいに)。
VB6を使用しています。
処理効率を考慮しなければJoin関数の第二引数に配列内には
まず入りえない文字,例えばchr(8)等を指定して結合して
If Join(A, Chr(8)) = Join(B, Chr(8)) Then
とかでしょうか?
比較文を延々と列挙しない限り、内部では必ずループが発生しますから、
「ループせずに」となるとほとんど不可能です。
一見ループしてなければいいのなら、
ループしている部分をクラス化でもして、
隠蔽してしまえばいいでしょう。
あるいは、VBのループ構文(For〜NextやDo〜Loop,While〜Wendなど)が
嫌いだ、というのなら、memcmpを使ったdllをC/C++で作って
VB側からCallすればいいでしょう。
(実は80x86系CPUではメモリブロック比較はマシン語レベルで
実装されてますから、インラインでマシン語実行でもできればいいのですが、
N88日本語BASIC86などと異なり、VBでは(できないことはありませんが)
あまり簡単にマシン語埋め込み・実行ができませんので、
「C/C++でDLL」のほうが現実的でしょう。)
ただし、dll呼び出しにはそれなりのコストがかかりますから、
1000要素程度の比較なら、素直にループしたほうが速いかもしれません。
36NET様、Say様ありがとうございました。
関数化して素直にループするようにします。