HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2009
1027
Sutoratosuテキスト閲覧プログラム16解決


Sutoratosu

リンク

2009/10/27(Tue) 22:14:43|NO.28569


XcoN = 455 screen 0,600,XcoN,4,0,0 exist "index.txt" if strsize = -1 { mes "index.txtが存在しません!" stop } POX = "index.txt" notesel buf noteload POX tasks = 5 sdim index,256 if noteinfo(0) > tasks { mes "目次数が多すぎます。(" + noteinfo(0) + ")" mes "最大目次数は" + tasks + "です。" stop } title "簡易データ管理プログラム" indexgetn = 0 CEND = "" A = CEND B = CEND C = CEND D = CEND E = CEND *notegetstart Gyou = indexgetn + 1 noteget index, indexgetn indexgetn+=1 if index = "" : goto *mesn if A = CEND { A = index goto *gotonote } if B = CEND { B = index goto *gotonote } if C = CEND { C = index goto *gotonote } if D = CEND { D = index goto *gotonote } if E = CEND { E = index goto *gotonote } *gotonote goto *notegetstart *mesn OB=-1 objsize 200,200 if A = "" { dialog "index.txtの内容がありません\n強制終了します。", 1, "Error-index.txtの内容なし" end } if B = "" { listbox OB,200,A goto *posm } if C = "" { listbox OB,200,A+"\n"+ B goto *posm } if D = "" { listbox OB,200,A+"\n"+ B + "\n" + C goto *posm } if E = "" { listbox OB,200,A+"\n"+ B + "\n" + C + "\n" + D goto *posm } listbox OB,200,A+"\n"+ B + "\n" + C + "\n" + D + "\n" + E *posm pos 0,400 objsize 200,55 POX = 53 objmode 2 font "", 25, 2 button goto "編集", *fix font "" MS = "Serect" pos 200,0 mesbox MS, 400, 455, 0 *RE repeat wait 10 if OB = 0 { POX = A + ".txt" gosub *hyouzi objprm 2, buf } if OB = 1 { POX = B + ".txt" gosub *hyouzi objprm 2, buf } if OB = 2 { POX = C + ".txt" gosub *hyouzi objprm 2, buf } if OB = 3 { POX = D + ".txt" gosub *hyouzi objprm 2, buf } if OB = 4 { POX = E + ".txt" gosub *hyouzi objprm 2, buf } loop *hyouzi notesel buf noteload "date\\"+POX SIZ = noteinfo(1) if SIZ > 32766 { dialog "容量オーバー!\n強制終了します。", 1, "Error-データの容量制限超" end } return *fix if POX = 53 { dialog "選択してください", 0, "Error-項目未選択" goto *RE } exec "date\\"+POX, 16 goto *RE stop

このプログラム、index.txtでファイル名を指定すると、data内のテキストを閲覧、
即時切替、メモ帳での即時編集ができる代物ですが、
5項目までしか表示できない欠点があります。

■質問
5項目だけでなく、項目数を無制限にすることはできませんか?
リストボックスの選択確認は永久ループしかないのですか?



この記事に返信する


珠後

リンク

2009/10/27(Tue) 22:26:28|NO.28570

ソースを見た限りではなんとも言えませんが、
配列変数が使えるかもしれません。



Sutoratosu

リンク

2009/10/27(Tue) 22:52:04|NO.28571

配列変数をどのように使うのですか?



ANTARES

リンク

2009/10/27(Tue) 23:46:56|NO.28577

>配列変数をどのように使うのですか?

sdim index,256,noteinfo(0)



ANTARES

リンク

2009/10/27(Tue) 23:48:24|NO.28578

あ、すみません。
レスがないことを確認して削除したのですが、
行き違いになってしまったので再掲。

#if 0 CEND = "" A = CEND B = CEND C = CEND D = CEND E = CEND #else repeat 5 a(cnt)="" loop #endif



Sutoratosu

リンク

2009/10/27(Tue) 23:50:23|NO.28579

削除の行き違いオンパレードですね……
もうこのことは忘れましょう。



Sutoratosu

リンク

2009/10/28(Wed) 00:02:31|NO.28580


sdim index,256,noteinfo(0)

の後、


*notegetstart Gyou = indexgetn + 1 noteget index, indexgetn indexgetn+=1 if index = "" : goto *mesn if A = CEND { A = index goto *gotonote } if B = CEND { B = index goto *gotonote } if C = CEND { C = index goto *gotonote } if D = CEND { D = index goto *gotonote } if E = CEND { E = index goto *gotonote } *gotonote goto *notegetstart




*mesn OB=-1 objsize 200,200 if A = "" { dialog "index.txtの内容がありません\n強制終了します。", 1, "Error-index.txtの内容なし" end } if B = "" { listbox OB,200,A goto *posm } if C = "" { listbox OB,200,A+"\n"+ B goto *posm } if D = "" { listbox OB,200,A+"\n"+ B + "\n" + C goto *posm } if E = "" { listbox OB,200,A+"\n"+ B + "\n" + C + "\n" + D goto *posm } listbox OB,200,A+"\n"+ B + "\n" + C + "\n" + D + "\n" + E

の部分はどうするのですか。



ANTARES

リンク

2009/10/28(Wed) 00:18:58|NO.28581

 ちょっといい加減に読んでいい加減に回答してしまったので訂正。
配列は不要です。


*notegetstart <不要> *mesn listbox OB,200,buf <略> *posm <略> *RE noteget index,OB POX=index+".txt" <以下略>



Sutoratosu

リンク

2009/10/28(Wed) 00:41:12|NO.28583


XcoN = 455 screen 0,600,XcoN,4,0,0 exist "index.txt" if strsize = -1 { mes "index.txtが存在しません!" stop } POX = "index.txt" notesel buf noteload POX tasks = 5 sdim index,256,noteinfo(0) if noteinfo(0) > tasks { mes "目次数が多すぎます。(" + noteinfo(0) + ")" mes "最大目次数は" + tasks + "です。" stop } title "簡易データ管理プログラム" indexgetn = 0 A = CEND B = CEND C = CEND D = CEND E = CEND *notegetstart Gyou = indexgetn + 1 noteget index, indexgetn indexgetn+=1 if index = "" : goto *mesn if A = CEND { A = index goto *gotonote } if B = CEND { B = index goto *gotonote } if C = CEND { C = index goto *gotonote } if D = CEND { D = index goto *gotonote } if E = CEND { E = index goto *gotonote } ;mes "" + Gyou + "行目 "+index ;mes indexgetn *gotonote goto *notegetstart *mesn OB=-1 objsize 200,200 listbox OB,200,buf *posm pos 0,400 objsize 200,55 POX = 53 objmode 2 font "", 25, 2 button goto "編集", *fix font "" MS = "Serect" pos 200,0 mesbox MS, 400, 455, 0 *RE repeat wait 10 noteget index,OB POX = index + ".txt" gosub *hyouzi objprm 2, buf loop *hyouzi noteload "date\\"+POX SIZ = noteinfo(1) if SIZ > 32766 { dialog "容量オーバー!\n強制終了します。", 1, "Error-データの容量制限超" end } return *fix if POX = 53 { dialog "選択してください", 0, "Error-項目未選択" goto *RE } exec "date\\"+POX, 16 goto *RE stop XcoN = 455 screen 0,600,XcoN,4,0,0 exist "index.txt" if strsize = -1 { mes "index.txtが存在しません!" stop } POX = "index.txt" notesel buf noteload POX tasks = 5 sdim index,256,noteinfo(0) if noteinfo(0) > tasks { mes "目次数が多すぎます。(" + noteinfo(0) + ")" mes "最大目次数は" + tasks + "です。" stop } title "簡易データ管理プログラム" indexgetn = 0 A = CEND B = CEND C = CEND D = CEND E = CEND *notegetstart Gyou = indexgetn + 1 noteget index, indexgetn indexgetn+=1 if index = "" : goto *mesn if A = CEND { A = index goto *gotonote } if B = CEND { B = index goto *gotonote } if C = CEND { C = index goto *gotonote } if D = CEND { D = index goto *gotonote } if E = CEND { E = index goto *gotonote } ;mes "" + Gyou + "行目 "+index ;mes indexgetn *gotonote goto *notegetstart *mesn OB=-1 objsize 200,200 listbox OB,200,buf *posm pos 0,400 objsize 200,55 POX = 53 objmode 2 font "", 25, 2 button goto "編集", *fix font "" MS = "Serect" pos 200,0 mesbox MS, 400, 455, 0 *RE repeat wait 10 noteget index,OB POX = index + ".txt" gosub *hyouzi objprm 2, buf loop *hyouzi noteload "date\\"+POX SIZ = noteinfo(1) if SIZ > 32766 { dialog "容量オーバー!\n強制終了します。", 1, "Error-データの容量制限超" end } return *fix if POX = 53 { dialog "選択してください", 0, "Error-項目未選択" goto *RE } exec "date\\"+POX, 16 goto *RE stop

とすると、初版では出なかったのにError 12 in line 76 が出てしまいます。



check

リンク

2009/10/28(Wed) 01:48:06|NO.28586

まずは配列変数を理解するところからはじめようぜ。



Sutoratosu

リンク

2009/10/28(Wed) 09:24:38|NO.28588


XcoN = 455 screen 0,600,XcoN,4,0,0 exist "index.txt" if strsize = -1 { mes "index.txtが存在しません!" stop } POX = "index.txt" notesel buf noteload POX tasks = 5 sdim index,256 title "簡易データ管理プログラム" *mesn OB=-1 objsize 200,200 listbox OB,200,buf goto *posm *posm pos 0,400 objsize 200,55 POX = 53 objmode 2 font "", 25, 2 button goto "編集", *fix font "" MS = "Serect Topics" pos 200,0 mesbox MS, 400, 455, 0 *RE repeat wait 10 if OB = -1 : goto *RE noteget index, OB POX = index gosub *hyouzi objprm 2, list loop *hyouzi notesel list noteload "date\\"+ POX + ".txt" SIZ = noteinfo(1) if SIZ > 32766 { dialog "容量オーバー!\n強制終了します。", 1, "Error-データの容量制限超" end } return *fix if POX = 53 { dialog "選択してください", 0, "Error-項目未選択" goto *RE } exec "date\\"+POX, 16 goto *RE stop

訂正。
エラーは選択時に発生。
Error 12 in line 43

index.txtも用意できてます。
おかしなことに、date\xxx.txtの中身が表示されてからエラーになります。



Sutoratosu

リンク

2009/10/28(Wed) 09:44:11|NO.28589

原因は、


noteget index, OB POX = index gosub *hyouzi objprm 2, list

が永久ループするせいではないでしょうか。

選択時にのみこれを表示する方法って何かありませんか?



f(準備中)

リンク

2009/10/28(Wed) 10:56:20|NO.28590

・・・・。

表示したときのインデックス覚えといて
インデックスの値が変化したら表示すりゃ良いんでね。



Sutoratosu

リンク

2009/10/28(Wed) 11:58:23|NO.28591


*RE SE = "" wait 10 if OB = -1 : goto *RE noteget index, OB if SE = index : goto *RE POX = index gosub *hyouzi objprm 2, list SE = index goto *RE *hyouzi notesel list noteload "date\\"+ POX + ".txt" SIZ = noteinfo(1) if SIZ > 32766 { dialog "容量オーバー!\n強制終了します。", 1, "Error-データの容量制限超" end } return

ということですか?
これでもだめでしたが。



Sutoratosu

リンク

2009/10/28(Wed) 12:01:29|NO.28592


SE = "" *RE wait 10 if OB = -1 : goto *RE noteget index, OB if SE = index : goto *RE POX = index gosub *hyouzi objprm 2, list SE = index goto *RE
でしたね。
失礼しました。



f(遊泳中)

リンク

2009/10/28(Wed) 21:00:37|NO.28603

ああ、良く見たらメモリノートパッド命令の文字列バッファ指定が
listに行ったままで、bufに戻ってないのが原因だな。



Sutoratosu

リンク

2009/10/28(Wed) 22:22:15|NO.28605


*RE wait 10 if OB = -1 : goto *RE noteget index, OB if SE = index : goto *RE POX = index gosub *hyouzi objprm 2, list notesel buf SE = index goto *RE

で解決!
皆様ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.