作成した返信
-
著者投稿
-
MZPlatformユーザー会サイト管理者
回答が遅くなり恐縮です。同じ製品を入手しましたが、下記の通りで良い結果は出ておりません。
PC:Windows 10 Pro
QRコードリーダー:Tera社製HW0002
MZ Platform 3.6のQRコードサンプル.mzaxで日本語のQRコード表示結果は、説明書通りの設定でExcelのみ読み取れまして、メモ帳・Word・MZアプリ(3.6)のテキストエリアは正しく入力できませんでした。MZのテキストフィールドで対応策をしても変わりませんでした。この機種はShift-JISの日本語QRコード対応とのことで、メモ帳とExcelおよび別設定でWordも対応とのことでしたが、説明書通りの設定ではExcel以外文字化けしました。この問い合わせフォームに入力する場合はWebブラウザの種類も関係すると思いますが、こちらの環境(新Edge)では文字化けしました。
同じ機器を使用してもこのように状況が異なることから、やはり使用環境にも依存することは確実です。Microsoft製ソフトウェアでも文字化けしていますので、MZ Platform側での対応は難しいと思います。
前述のように、同じ使用環境でMZ Platformのテキストフィールドで正常に読み取れる場合もありますので、もしそのような機器が入手できればご使用いただき、それ以外は日本語QRコードを使用しない方法をご検討いただいた方が良いと思います。
MZPlatformユーザー会サイト管理者コンポーネント内部の処理を確認したところ、確かに中断や停止の処理の中で実行中かどうかの判定をせずに時間の加算をしていました。今後のリリース時に修正を検討します。
現状としては、ボタンを押せないようにして対処するしかないと思います。処理を追加したサンプルのZIPファイルを添付します。
添付ファイル:
MZPlatformユーザー会サイト管理者残念ながら、MZアプリケーションでその機能を直接実現するためのコンポーネントはありません。
もし同様の機能を既存のコンポーネントの組み合わせで実現する場合、例えば入力されたパスワードの情報をPC上の外部ファイルかデータベースに記録して、照合することになります。
ただし、パスワードの情報を外部ファイルに記録すると他人も見られることになるので、セキュリティ上の問題があります。データベースへの記録では他人から見られにくくなりますが、やはり技術的には他人からも見られることになりますので、同様の問題があります。
以上の問題を認識した上で、アプリケーション実行中にパスワードを外部ファイルに保存するサンプルをZIPファイルにしたものを添付します。パスワード文字列そのものではなく変換後の文字列を特定のファイルに保存する処理を実現しましたので、必要に応じて参考にしていただければと思います。
添付ファイル:
MZPlatformユーザー会サイト管理者一般的には、使用しているコンポーネントのデータをすべて初期値に設定して、画面部品コンポーネントの表示状態を初期状態に設定することになります。具体的に実現したいことがあればご説明をお願いします。
MZPlatformユーザー会サイト管理者MZアプリケーションの処理の中で、そのアプリケーションそのものを再起動することはできないと思いますが、それらしい処理を実現することは可能です。
確かに、ボタンのアクションイベントの処理の中で、アプリケーションコンポーネントの「startApplication()」メソッドを呼ぶことで、アプリケーション開始イベントが発生します。つまり起動時の処理をもう一度実行することは可能です。
一方、どこかでアプリケーションコンポーネントの「アプリケーションを終了する()」メソッドを呼び出すと、実行中のプロセスそのものが完全に終了してしまいますので、それ以降の処理を記述していても実行されることはありません。
そのため、再起動のような処理を実現するためには、アプリケーション内のすべてのデータや値が起動時の状態となるような初期化用のサブルーチンなどを作成しておいて、ボタンを押したときにそれが実行されるようにします。
上記の方法では希望する動作が実現できないということがありましたら、こちらでも検討しますのでお知らせください。よろしくお願いします。
MZPlatformユーザー会サイト管理者回答が遅くなり申し訳ありません。現在、同じものを取り寄せているところですが、もう少し先になりそうです。同じ会社の別製品で試しましたが、下記の通りで良い結果は出ておりません。
PC:Windows 10 Pro
QRコードリーダー:Tera社製elf819
MZ Platform 3.6のQRコードサンプル.mzaxで日本語のQRコード表示結果は、メモ帳・Excel・MZアプリ(3.6)のテキストエリアの全てで正しく入力できませんでした。MZのテキストフィールドで対応策をしても変わりませんでした。この機種はShift-JISの日本語QRコード対応とのことで、メモ帳とExcelは対応とのことでしたので、その後Tera社に問合せし、QRコードリーダー側の設定を変更してExcelのみ読み取れました。
MZPlatformユーザー会サイト管理者演算コンポーネントの演算実行結果で処理を分岐したい場合は、演算実行メソッドを起動した以降は処理を書かず、演算コンポーネントの処理完了イベント処理に必要な処理を書いて、イベント番号で分岐します。また、処理完了イベント処理にすべて書くとイベント番号の設定がたいへんなので、分岐処理用のサブルーチンを作成してその処理を呼び出す方が良いでしょう。そのイメージを作成しましたので添付します。実際に動作するか確認していませんが、参考にしていただければと思います。
なお、スクリプト実行の戻り値として、falseか配列データが返るというのは、あまり良くないと思います。添付したZIPを展開したMZアプリでは、エラー時にnullを返すように修正しています。それによって、等価演算ではなくNull判定を使用しました。
添付ファイル:
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コードリーダーについてもお知らせいただけると助かります。
-
著者投稿