アドレス帳⑤ 『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 |

【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



2009 年 4 月 15 日 12:59 AM
[...] アドレス帳⑤ 『HSP3』 [...]