タイトル : Re^2: COMP-3の変換につて 投稿日 : 2017/09/22(Fri) 15:47 投稿者 : Naruse
魔界の仮面弁士さま 返信ありがとうございます。 実験までしていただき、お手を煩わせて申し訳ありません。 > ループカウンタすらローカル変数になっていないなど、 > モジュールレベル変数(フィールド変数)を使いすぎな点が気にかかります。 元々は汎用機やサーバのCobolerでして、ご指摘のようなことを気にして おりませんでした。以後は気を付けます。 > > また、COMP3_CNV_RTN の引数を ByVal にしていないのは何故でしょうか? > > > > MOTO = GT.W_200 > > MOTO = StrConv(GT.W_200, vbFromUnicode) ' システムコードに変換 > 最初の代入は無意味に見えますし、同じ変数に使いまわして > Unicode 文字列と ANSI バイナリの両方を格納するのにも違和感があります。 > ByValに関しては理解できていないためです。 MOTOへの代入はテスト中でのコメント漏れです。すみません。 > 正常に変換される例と、失敗する例の提示はありがたいですが、 > 失敗する方については「本来期待する結果」も併記してもらわないと > 状況を理解しにくいです。 > 自分勝手に理解していただけると思っていました。申し訳ありません。 実験結果の「Command1」が求める結果なのでそちらで実行できるように 修正したいと思いますが、ここでも知識不足が露呈しプログラムの理解 から始めなければなりません。 厚かましいとは思いますが、実験で作られたプログラムの解説をお願い できないでしょうか。本当に申し訳ありません。 正しく変換できなかった解説もありがとうございました。 > 今回のケースは、そもそも変換元のデータを「文字列」として処理しようとしているのが間違いです。 > 渡すべきデータさえ破損していなければ、現状の COMP3_CNV_RTN の実装でも正しく変換されるようですし。 > > 以下実験コード > > === Command1(Byte型の一次元配列) === > 000489944c --> +000489944 > 000009834c --> +000009834 > 000015048c --> +000015048 > 000007982c --> +000007982 > 000011439c --> +000011439 |