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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0404
awqディレクトリの記録と追加3解決


awq

リンク

2012/4/4(Wed) 18:28:25|NO.45795

前回「読み込みファイルの偶数行の抽出」で解答をいただいたものです。

応用してソフトを作ろうとして骨組みを作ったのですが、
なぜかうまくいきません。
先にスクリプトを書きます。

*top0 screen 0 title "Application Opener" notesel buf Line_Max = noteinfo(0) exist "apcdata.dat" if strsize = -1: goto *new *re dialog "dat",16,"apcdata.datを選択してください。" if stat=0 : end *top noteload refstr objsize 200,24 button "ファイル・アプリケーションの追加",*plus repeat notemax if cnt\2 == 0 : continue noteget name,cnt button name,*label loop button "エクスプローラ",*exp button "コマンドプロンプト",*prom button "メモ帳",*text pos 201,54 button "変更を保存して再起動",*top0 stop *plus dialog "exe",16,".exe以外で登録するとエラーになります。" if stat=0 :stop buf=refstr split buf, "\\", results aa=stat-1 bb=results(aa) dialog "ファイル"+refstr+"を\n追加します。よろしいですか?",3,"" put =""+ refstr if stat = 6 : dialog "追加しました。",0 : noteadd put,notemax: noteadd bb,Line_Max+1 : notesave "apcdata.dat" stop *new notesave "apcdata.dat" goto*re *label if stat=0 : noteget name,0 : exec name if stat=1 : noteget name,2 : exec name if stat=2 : noteget name,4 : exec name if stat=3 : noteget name,6 : exec name if stat=4 : noteget name,8 : exec name if stat=5 : noteget name,10 : exec name if stat=6 : noteget name,12: exec name if stat=7 : noteget name,14: exec name if stat=8 : noteget name,16 : exec name if stat=9 : noteget name,18 : exec name stop *exp exec "Explorer.exe" stop *prom exec "Cmd.exe" stop *text exec "Notepad.exe" stop


これで実行し、.exeのファイルを選択し.datに保存したのですが
以前は.datにディレクトリとディレクトリ最後列が2段に分けて記録されていました。

例)
C:\HSP\HSPgame\hsptmp.exe
hsptmp.exe

ですが、なぜかこれだと保存しても
C:\HSP\HSPgame\hsptmp.exe
だけしか保存されておらず、
2回目以降はそこに上書きという形になってしまいました。

どうしてでしょうか?
説明が分かりにくかったらすいません。



この記事に返信する


skyblue

リンク

2012/4/4(Wed) 19:26:55|NO.45796

変更点と理由は以下です
Line_Max = noteinfo(0) -- > 削除
必要がない
buf=refstr -- > buf+=refstr
二回目以降上書きされないように
noteadd put,notemax -- > 削除
必要がない
noteadd bb,Line_Max+1 -- > noteadd bb,-1
最後尾に追記するにはこっちの方が簡単

if stat=0 : noteget name,0 : exec name if stat=1 : noteget name,2 : exec name if stat=2 : noteget name,4 : exec name if stat=3 : noteget name,6 : exec name if stat=4 : noteget name,8 : exec name if stat=5 : noteget name,10 : exec name if stat=6 : noteget name,12: exec name if stat=7 : noteget name,14: exec name if stat=8 : noteget name,16 : exec name if stat=9 : noteget name,18 : exec name
全部削除して
noteget name,0*2 : exec nameを追加
そうすることで動的オブジェクト数を配置限界まで無限に作成可能
ただし、スクロールバーが必要



cats

リンク

2012/4/4(Wed) 20:40:57|NO.45804

勝手ながらラベル名を変えてしまいました。

*Start sdim buf,256 screen 0 title "Application Opener" exist dirinfo(1)+"\\apcdata.dat" if strsize=-1 :goto *choose notesel buf :noteload dirinfo(1)+"\\apcdata.dat" *Main clrobj objsize 200,24 pos 0,0 :button "ファイル・アプリケーションの追加",*plus repeat notemax if cnt\2 == 0 : continue noteget name,cnt button name,*label loop button gosub"エクスプローラ",*explorer button gosub"コマンドプロンプト",*cmd button gosub"メモ帳",*notepad pos 201,54 button "再起動",*Start stop *plus dialog "",16,"全てのファイル(*.*)" if stat=0 :goto *Main if strsize=-1 :goto *plus notesel buf :buf=buf+""+refstr+"\n"+getpath(refstr,8)+"\n" :notesave dirinfo(1)+"\\apcdata.dat" notesel buf :noteload dirinfo(1)+"\\apcdata.dat" goto *main *explorer exec "Explorer.exe" notesel buf :buf=buf+"C:\\WINDOWS\\explorer.exe\nexplorer.exe\n" :notesave dirinfo(1)+"\\apcdata.dat" return *cmd exec "Cmd.exe" notesel buf :buf=buf+"C:\\WINDOWS\\System32\\cmd.exe\ncmd.exe\n" :notesave dirinfo(1)+"\\apcdata.dat" return *notepad exec "Notepad.exe" notesel buf :buf=buf+"C:\\WINDOWS\\System32\\notepad.exe\nnotepad.exe\n" :notesave dirinfo(1)+"\\apcdata.dat" return *label *choose dialog "dat",16,"DATファイル" if stat=0 :end exist refstr if strsize=-1 :goto *choose notesel buf :noteload refstr goto *Main
僕もランチャーを作りました(指定ファイルのアイコンがウィンドウ並ぶようなの;)が
難しいプログラムなのでがんばってください。



awq

リンク

2012/4/6(Fri) 18:42:45|NO.45895

>>skyblueさん
訂正ありがとうございます。勉強不足でした。

>>catsさん
修正分かりやすかったです。
さらに応用してみようと思います。



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