|
|
|
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
ソースを見た限りではなんとも言えませんが、
配列変数が使えるかもしれません。
|
|
2009/10/27(Tue) 22:52:04|NO.28571
配列変数をどのように使うのですか?
|
|
2009/10/27(Tue) 23:46:56|NO.28577
>配列変数をどのように使うのですか?
sdim index,256,noteinfo(0)
|
|
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
|
|
2009/10/27(Tue) 23:50:23|NO.28579
削除の行き違いオンパレードですね……
もうこのことは忘れましょう。
|
|
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
の部分はどうするのですか。
|
|
2009/10/28(Wed) 00:18:58|NO.28581
ちょっといい加減に読んでいい加減に回答してしまったので訂正。
配列は不要です。
*notegetstart
<不要>
*mesn
listbox OB,200,buf
<略>
*posm
<略>
*RE
noteget index,OB
POX=index+".txt"
<以下略>
|
|
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 が出てしまいます。
| |
|
2009/10/28(Wed) 01:48:06|NO.28586
まずは配列変数を理解するところからはじめようぜ。
|
|
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の中身が表示されてからエラーになります。
|
|
2009/10/28(Wed) 09:44:11|NO.28589
原因は、
noteget index, OB
POX = index
gosub *hyouzi
objprm 2, list
が永久ループするせいではないでしょうか。
選択時にのみこれを表示する方法って何かありませんか?
|
|
2009/10/28(Wed) 10:56:20|NO.28590
・・・・。
表示したときのインデックス覚えといて
インデックスの値が変化したら表示すりゃ良いんでね。
|
|
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
ということですか?
これでもだめでしたが。
|
|
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
でしたね。
失礼しました。
|
|
2009/10/28(Wed) 21:00:37|NO.28603
ああ、良く見たらメモリノートパッド命令の文字列バッファ指定が
listに行ったままで、bufに戻ってないのが原因だな。
|
|
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
で解決!
皆様ありがとうございました。
|
|