Curl Global Community
QRコードから読み込んだ値をローカルストレージに格納する - Printable Version

+- Curl Global Community (https://communities.curl.com)
+-- Forum: Discussions (https://communities.curl.com/forumdisplay.php?fid=1)
+--- Forum: General Curl questions (https://communities.curl.com/forumdisplay.php?fid=2)
+--- Thread: QRコードから読み込んだ値をローカルストレージに格納する (/showthread.php?tid=1352)



QRコードから読み込んだ値をローカルストレージに格納する - chiba - 05-09-2016

また初歩的なご質問で恐縮ですが、ご教授願います。
サンプルプログラムからQRコードを読み込むプログラムをコピーし、読み込んだ値をローカルストレージに格納するプログラムを作成しようとしています。
下記の様なコーディングを記述したのですが、QRコードから読み込んだ値を取得する方法がわかりません。
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
def vb-result = {self.find-graphic-by-name "vb-result"} asa VBox
{self.cmd_qr.add-event-handler
{on Action do
{read-barcode
{on ev:BarcodeReadFinishedEvent do
{vb-result.add
{format "Data = %s", ev.data}
}
||DBの初期化(drop table)
{drop-rows-from-db2}
||DBの作成(create table)
{create-rows-from-db2}
||DBのデータを読み込む
def datas = {read-rows-from-db2}
let parameter0:String = ""
let parameter1:String = ""
||ここでQRコードから読み込んだ値を変数に格納したいのですが、方法がわかりません。
|| set parameter0=??
|| set parameter1=??
||画面から取得した納入番号をテーブルにinsert
def rowdata = {edit-rows-to-db2
||rowdata = self.rowdata,
name = "input-code",
parameter1 = parameter0,
parameter2 = parameter1
}
{self.change-page LoginScreen}
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////
仕組みとしてはvb-result.addの部分でQRコードから読み込んだ値をセットしているようなのですが、
セットされた値をどの様に取得できるのかがわかりません。
また、QRコードから読み込んだ値は「○○○○○-○○○」といった感じでハイフンの前後に数値が入る仕様となっています。
「○○○○○-○○○」の値をそのままローカルストレージのparameter1 にInsertする方法を教えてください。
また、「○○○○○-○○○」の値をハイフンの前後で2つに分割して、ハイフンの前の値をローカルストレージのparameter1 にInsert、
ハイフンの後の値をローカルストレージのparameter2にInsertする方法もできれば教えていただきたいです。
お忙しいところ大変恐縮ですが、ご教授の程よろしくお願いします。



RE: QRコードから読み込んだ値をローカルストレージに格納する - dyoshida - 05-09-2016

引用されているサンプルコードからの推測とはなりますが、おそらく "read-barcode"プロシージャが
QRコードを読み込む処理で、非同期完了の読み込み結果を BarcodeReadFinishedEvent イベント
で受け取るものなのではないかと思います。

添付サンプルで、{format "Data = %s", ev.data}となっているあたりが取得した値を整形して
いるとこではないでしょうか

関係ありそうな箇所に説明を加えて取得した文字列を変数parameter0 に代入するとこんな感じでしょうか?
Code:
let parameter0:String = ""

|| コマンドボタン?にイベントハンドラを追加
{self.cmd_qr.add-event-handler
    {on Action do
        || ボタンが押された際にバーコード読み込みプロシージャを実行
        || (引数はバーコード読み込完了後に実行されるイベントハンドラ?)
        {read-barcode
            {on ev:BarcodeReadFinishedEvent do
                || イベントのdataプロパティに読み込んだ値が格納されている?
                || TODO:dataプロパティの型が不明ですがString型でなければ変換して代入
                set parameter0 = ev.data
            }
        }
    }
}

また、「○○○○○-○○○」のような文字列をハイフンの前後で2つに分割する方法ですが、Curlドキュメントの
String(クラス)の説明に記載されているメソッドの一覧を眺めているといろいろと文字列の加工につかえそうな
ものがあります。

ハイフンでの分割はsplit (メソッド)がつかえるのでは?
Code:
let sa:StringArray = {parameter0.split split-chars = "-"}
{if sa.size ==2 then
    set parameter1 = sa[0]
    set parameter2 = sa[1]
else
    ||"読み込み失敗"
}