アドレス帳⑤ 『HSP3』


前回は簡単な「登録画面の表示」を作成しました。今回は「登録する」ボタンをクリックするとデータをファイルへ書き込みます。ファイルへの書き込みには「メモリノートパッド命令」を使います。

【sample.hsp】 ※行番号は説明上の番号です

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
#include "lib_address.hsp"
screen 0,600,400 //windowサイズ
title "住所録"        //windowタイトル
//*********************************************
//    初期設定
//*********************************************

saveFile  = "address.txt"         //データファイル名
sdim dbData                         //ファイルデータ
kenString = fun_KenString()    //県プルダウン文字列
notesel dbData
//ファイル内容をロード
exist saveFile
if strsize != -1 :noteload saveFile

//*********************************************
//    メニュー画面
//*********************************************

*menu
      略
stop
//*********************************************
//     初期化
//*********************************************
*init
       略
return

//*********************************************
//    登録編修画面
//*********************************************

*inputData
  
    objsize 100,25
    pos 50,300  :button "登録する",*regist
    pos 250,300  :button "キャンセル",*menu
 stop
//*********************************************
//    新規登録・編集処理
//*********************************************

*regist
   //■書き込みデータ生成
    saveData = ""
    saveData += fun_saveAmend(name)
    saveData += "," + fun_saveAmend(kana)
    saveData += "," + fun_saveAmend(zip)
    saveData += "," + ken_id
    saveData += "," + fun_saveAmend(address)
    saveData += "," + fun_saveAmend(address2) 
    saveData += "," + fun_saveAmend(biko)
 
    notesel dbData
    noteadd saveData,,0   //新規追加
    bsave saveFile,dbData
    goto *menu
stop
//*********************************************
//    終了処理
//*********************************************
*appEnd
   end
stop

 【lib_address.hsp】 追加分

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
;********************************************************
;■半角カンマを全角カンマ、「\n」を「<br/>」に置換する
;
; 引数: (1)pre_subject  置換前の文字列
;
; 戻り値:after_subject    置換後の文字列
;********************************************************

#module
#defcfunc fun_saveAmend str pre_subject
    after_subject = pre_subject
    ;半角カンマを全角カンマ      
    after_subject = str_replace("\,",",",after_subject)
    ;「\n」を「<br/>」に
    after_subject = str_replace("\n","<br/>",after_subject) 
return after_subject
#global

address03

【sample.hsp】
大まかな流れは、保存ファイルが存在すればファイルからデータを読み込んでバッファに格納し、読込データに新たに追加データを加え、バッファ内容をファイルに書き込みます。
7行目:
保存するファイル名を指定しています。今回は「address.txt」という名前で保存します。
10行目:
メモリノートパッド」用のバッファを準備しています。
12~13行目:
「exist命令」はファイルが存在するかどうか調べます。存在しなければシステム変数「strsize 」に「-1」が返ります。ファイルが存在すれば「noteload命令」でバッファにファイル内容を読み込みます。
31~33行目:
登録画面に「新規登録ボタン」と「キャンセルボタン」を追加しました。「キャンセルボタン」をクリックするとトップメニューに戻ります。「新規登録ボタン」をクリックすると、「ラベル*regist」でデータの書き込みを行います。
40~47行目:
各データを「,」を区切り文字として結合しています。その際にデータに半角カンマと改行があれば置換を行います。このプログラムでは、半角カンマは各データを分ける為に、改行は1レコードの区切りとしての判断文字として使用する為、そのまま保存すると誤動作の原因になります。置換処理は「lib_address.hsp」で独自関数「fun_saveAmend」で行っています。また、この独自関数内でも「文字列の置換 (strmid)」で説明した独自関数「str_replace」を使いました。
50行目:
バッファに「noteadd 命令」を使って新データを追加しています。
51行目:
bsave 命令」を使ってバッファ内容をファイルに保存しています。
52行目:
ファイルに保存した後、トップメニューに戻ります。
 
サンプルファイル:
lib_address.hsp
sample.hsp
 


「アドレス帳⑤ 『HSP3』」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です