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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1015
AziO""だけを抜く方法8解決


AziO

リンク

2008/10/15(Wed) 23:34:43|NO.20222

たびたびすみません。
前回、dir_cmdlineを教えてもらったものですが、


noteload dir_cmdline
これでは””が含まれているので、エラーがおきてしまいます。
どうしたら dir_cmdline をつかってファイル読み込みできるのですか?



この記事に返信する


SYAM

リンク

2008/10/15(Wed) 23:56:38|NO.20226

strmid命令は文字列の一部を抜き出す命令です。

""に囲まれているかもしれない文字の、""を外すスクリプトを以下に示します。
対称の文字列変数を s とします。


if strmid(s,0,1)="\"" : s=strmid(s,1,strlen(s)-2)



レノス

リンク

2008/10/15(Wed) 23:57:33|NO.20227

自分で調べれば簡単にできます。
ヒント:getstr



inovia

リンク

2008/10/16(Thu) 16:48:39|NO.20237

HSP2x時代からこんな感じで処理してます。(^O^)/
変数fnameに代入されます。


if dir_cmdline!="":{ sdim pass,1024 sdim fname,1024 pass = dir_cmdline tmp=peek (pass,0) if (tmp == 34) { // 1文字目が"であった場合取り除く(WinNT/WinXP/Vista) // 1文字目と最後の"を取り除いてfnameに代入 long=strlen (pass) long -= 2 fname=strmid (pass,1,long) } else { fname = pass } }



.Hrk

リンク

2008/10/16(Thu) 18:19:30|NO.20251

コマンドライン文字列のダブルクォーテーションの簡単な除去処理です

前提として、
1. ファイルパスを渡す
2. 複数のファイルパスを渡さない
3. 「"hoge.txt」のような、'"'で終わっていないパスを渡さない
という条件があります。

A, B, Cはそれぞれ、どれも同じことをやっていますので、どれか一つを
使えば結構です。



;A) strmidを使用した場合 path = dir_cmdline if( peek(path,0) == '"' ){ path = strmid(path,1,strlen(path)-2) } ;B) getstrを使用した場合 path = dir_cmdline if( peek(path,0) == '"' ){ getstr path,path,1,'"' } ;C) dir_cmdlineを置き換えてみる __path=dir_cmdline #undef dir_cmdline #define dir_cmdline __path if peek(__path)=34:getstr __path,__path,1,'"'

処理の流れとしては、コマンドライン文字列が「hoge.txt」または
「"hoge.txt"」の形式で渡されるので、始めの一文字をチェックし
て、もし'"'であれば後者の形式であるので、始めの'"'の後から次
の'"'までの間の文字列を取り出し、変数pathに格納します。そうで
ない場合は、そのままpathに格納されたものを使えばOKです。

'"'はダブルクォーテーションのASCIIコード「34」(int型)を表し
ます。

peek命令は文字列の先頭から数えてn番目の文字の文字コードを返す
関数ですので、それと'"'を比較することにより、コマンドライン文
字列の先頭がダブルクォーテーションで始まっているか否かを判定す
ることができます。

strmid, getstr命令についてはHSPスクリプトエディタにそれぞれ、
「strmid」、「getstr」と打ち、打った文字列を選択した状態でF1
キーを押すことにより表示されるHSP HELP Browser兇鮓れば、ど
ういった命令なのか分かると思います。それでも分からない場合は
掲示板で質問するといいです。

最後の#undef, #defineについては、「マクロ」や「プリプロセッサ
命令」と呼ばれるものなので、プログラムを作る上で特に覚える必要
はありません。HSPの命令をだいたい覚えてしまって飽きたころに使
い出すといいと思います。

長々と書いてしまいすみません。



AziO

リンク

2008/10/16(Thu) 22:23:27|NO.20263


DIR=Dir_cmdline if strmid(DIR,0,1)="\"" : DIR=strmid(s,1,strlen(s)-2) noteload DIR

これでは、エラーが起きてしまいます



KENTA

リンク

2008/10/16(Thu) 22:36:15|NO.20266

noteloadなどのnote系の命令を使う場合、まずnoteselで変数を指定しなければいけません。

//例 notesel val //変数を指定する。 noteload "test.txt" //test.txtを読み込む。
詳しくはヘルプを見ればわかると思います。



AziO

リンク

2008/10/16(Thu) 22:42:48|NO.20267

すみません。
さっき乗せたスクリプトは、全部あるうちの1部を抜いたので、
今度は全部乗せときます。


*SYSTEM_SETUP #include "hspdef.as" exist "SETUP.ini" if strsize=-1 :dialog "まずはセットアップを完了してください。\nセットアップした後にこのソフトは機能します":exec "SETUP.exe",16:end if strsize!-1 :bload "SETUP.ini",INI onexit gosub*SELECT_END screen 0,640,480 title "TEXT Edit for HTML" objsize 640,20 notesel HTML SAVE_END=0 HTML_TEST=0 *MEMORY_SETUP HTML={" <HTML> <HEAD> <meta http-equiv=\"Content-Type\" content=\"test/htm; chrset=Shift_JIS\" <TITLE>あなたのホームページタイトル</TITLE> </HEAD> <BODY> </BODY> </HTML> "} *ON_SET if INI(0)=0:HTML="" notesel HTML SAVE_END=0 HTML_TEST=0 *OBJECT_SETUP objsize 640,20 mesbox HTML,640,400,5,0 button "| Load | <<HDD |",*LOAD_STEP1 button "| SAVE | >>HDD |",*SAVE_STEP1 button "| HTML TEST | DATA>>IE |",*HTML_TEST_STEP1 button "| HTML SAVE | DATA>>HDD |",*HTML_SAVE_STEP1 if dir_cmdline!"" :goto*AutoLoad stop *LOAD_STEP1 if SAVE_END=0 :dialog "セーブされていません。\n本当にロードしますか?",3 if STAT=7 :stop dialog "",16,"HTML_SORCE格納ファイル" if STAT=0 :stop noteload Refstr SAVE_END=1 cls goto*OBJECT_SETUP stop *SAVE_STEP1 dialog "",17,"HTML_SORCE格納ファイル" if STAT=0 :stop notesave Refstr SAVE_END=1 stop *HTML_TEST_STEP1 if refstr="":notesave "Defalt_Index.html" if refstr!"" :notesave refstr+"DefaltIndex.html" exec "Defalt_Index.html",16 HTML_TEST=1 stop *HTML_SAVE_STEP1 dialog "html;*htm",17,"HTMLドキュメント" if STAT=0 :stop notesave Refstr+".html" stop *SELECT_END if SAVE_END=1 :end if SAVE_END=0 :dialog "セーブされていません。終了しますか?",3,"警告" if STAT=6 and HTML_TEST=1:delete "DEFALT_INDEX.html":end if STAT=6 :end return *AutoLoad DIR=Dir_cmdline if strmid(DIR,0,1)="\"" : DIR=strmid(s,1,strlen(s)-2) noteload DIR *LOAD_END SAVE_END=1 objprm 0,HTML goto*OBJECT_SETUP stop

SETUP.exeのスクリプト

*SETUP screen 0,300,200,8 title "SETUP WIZARD" dim INI,10 exist "SETUP.ini" if strsize!-1 :bload "SETUP.ini",INI:HTML=INI(0):CPU=INI(1):SAVE=INI(2) objsize 300,50 chkbox "はじめにHTML基本構文を入れておく(*推奨)",HTML chkbox "なるべくCPU占拠率を高めてパフォーマンスをあげる(*推奨)",CPU chkbox "HTML保存する際に自動的に.HTMLにする。(*推奨)",SAVE button "このセットアップ情報を出力",*SAVE_INI stop *SAVE_INI INI(0)=HTML INI(1)=CPU INI(2)=SAVE bsave "SETUP.ini",INI dialog "セーブ完了" end

ながったらくてすみません。
お願いします



AziO

リンク

2008/10/17(Fri) 00:03:11|NO.20277

SYAMさん。
そして解答してくれた皆さん
ありがとうございました!



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