フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
途中経過をご報告します。今回テストした環境は下記になります。
PC:Windows 10 Pro
QRコードリーダー:unitech社製MS852-2UCB00-SG(CJKコントロールで日本語Shift-JIS設定)
MZ Platform 3.6のQRコードサンプル.mzaxで日本語のQRコード表示結果として、メモ帳・Excel・MZアプリ(3.6)のテキストエリアの全てで正しく入力できませんでした。
なお、MZアプリのテキストフィールドのみ、一度メソッド「入力モードを英語にする()」を呼び出すと正しく入力されました。参考までにそのアプリを圧縮したZIPファイルを添付しますので、こちらをお試しいただけますでしょうか。
Windows 8.1以前では問題なく動作したとの情報があるので、使用するPCのOSとQRコードリーダーの機種および設定に大きく依存しそうです。他の機種でも調査してみますが、添付のサンプルのような対応で改善しない場合は、日本語QRコードを使用しない方法をご検討いただいた方が良いかもしれません。
添付ファイル:
MZPlatformユーザー会キーマスター過去に回答したと思いますが、MZではbyte値を直接扱うことが難しいため、byte配列をMZ側に取り込まない方法をご検討いただけると助かります。MZに取り込むのがfloatの配列であれば、まだ対応の方法があります。
ひとまず最後の2つのご質問に回答いたします。
bytes[0]=1;では型が違うという理由でエラーが出るようです。
bytes[0]=(byte)1;のように型変換を明示的に書くとエラーは出なくなると思います。スクリプト実行で配列をreturnして、それを文字列出力する場合、その出力は正常で[Bがbyte値の配列を示しています。@以降はポインタアドレスを示すので値には変換できません。
配列を扱うためには、配列操作コンポーネントを使います。添付のZIPファイルを展開したMZアプリをビルダーでご確認ください。配列操作を使うと配列オブジェクトとインデックスを指定して値を取り出すことが可能です。ただ、値がbyteのためMZではintに変換されてしまいます。この配列の中身がfloatなどであればMZで値をそのまま使うことができます。
添付ファイル:
MZPlatformユーザー会キーマスター画像の添付ありがとうございます。もし可能であれば、ご使用のQRコードリーダーについてもお知らせいただけると助かります。
MZPlatformユーザー会キーマスター年末年始のため回答まで時間をいただきたく存じます。
もし可能であれば、どのような文字化けか教えていただけると助かります。。例えば「???」となるのか、難解な漢字の羅列になるのか、などです。
また、そのQRコードはどのように作成したか、わかる範囲で教えていただけますでしょうか。
- この返信は4年、 3ヶ月前にMZPlatformユーザー会が編集しました。
MZPlatformユーザー会キーマスターMZの問題というよりはウイルスバスターとの相性の問題だと思いますが、ご報告ありがとうございます。
MZPlatformユーザー会キーマスター確認ですが、スクリプト実行コンポーネントからbyte配列が戻り値として得られて、それをMZ側でfloatにしたいから変数に入れたいという趣旨ですよね。
以前のご質問に対する回答に書いた通り、MZでバイト配列からfloatに変換するためにはスクリプト実行コンポーネントでfloatにすることになります。つまり、スクリプト実行コンポーネントの処理中で得られるbyte配列をそのままfloatに変換する方が良いと思いますが、何か理由があるのでしょうか。
MZPlatformユーザー会キーマスター再度のご報告ありがとうございます。こちらでも調査してみます。
MZPlatformユーザー会キーマスターMZのデバッグ実行は、イベント処理の方法が通常実行と大きく異なり、シリアル通信との組み合わせでは正常に動かない場合があると思います。整数の場合は処理できて実数でできない理由はわかりませんが、できない場合はそういうものだということでご容赦ください。
MZPlatformユーザー会キーマスター残念ながら、現在のシリアル通信コンポーネントには、4バイトデータから実数への変換機能はありません。
現状での対処方法としては、スクリプト実行コンポーネントを用いてJavaソースコードで処理を作成する方法がありまして、その例をサンプルとして作成しましたので、添付のZIPファイルを展開してご確認ください。
添付ファイル:
MZPlatformユーザー会キーマスターご報告ありがとうございます。サーバの更新で発生する問題は事例が少ないため、貴重な情報共有でした。MySQL8につきましても、JDBCドライバを適切に更新し、TimeZoneを設定すると接続に成功するということがわかり、参考になります。今後も何かありましたら、掲示板で積極的に情報共有をしていただけると助かります。
-
投稿者投稿