◀一般トップへ
  • 2207 範囲選択部分のみを「コンパイル+実行」
    • 2209 RE: 範囲選択部分のみを「コンパイル+実行」
      • 2213 Re2: 範囲選択部分のみを「コンパイル+実行」
        • 2214 Re3: 範囲選択部分のみを「コンパイル+実行」
          • 2215 Re4: 範囲選択部分のみを「コンパイル+実行」
            • 2218 Re5: 範囲選択部分のみを「コンパイル+実行」
    • 2217 皆さんに感謝です。m(__)m
    • 2237 マクロがうまく機能しません(T_T)すいさん助けて~。
      • 2238 RE: マクロがうまく機能しません(T_T)すいさん助けて~。
        • 2240 ご報告致します
          • 2241 Re: ご報告致します
          • 2242 Re: ご報告致します
    • 2246 大成功\(T_T)/感激
      • 2247 もひとつ御教授願えませんかm(__)m
        • 2249 RE: もひとつ御教授願えませんかm(__)m
          • 2256 Re2: もひとつ御教授願えませんかm(__)m
            • 2265 たびたび有難う御座いますm(__)m
        • 2253 有難う御座いました
  • [2207] 範囲選択部分のみを「コンパイル+実行」 めろめろ 2002年08月19日 12:36

    HSPスクリプトの範囲選択部分のみを「コンパイル+実行」
    したいのですが、コマンドラインの最後に\Cでは意味が
    違うのでしょうか?エラーになってしまいます。
    どうしたらよいのでしょうか?

    コンパイラはxiさん作の「xicmp」を使用しています。

    • [2209] RE: 範囲選択部分のみを「コンパイル+実行」 すい 2002年08月19日 21:56

      >HSPスクリプトの範囲選択部分のみを「コンパイル+実行」
      >したいのですが、コマンドラインの最後に\Cでは意味が
      >違うのでしょうか?エラーになってしまいます。
      >どうしたらよいのでしょうか?
      >
      >コンパイラはxiさん作の「xicmp」を使用しています。

      Xi Compiler < http://home.catv.ne.jp/pp/logic/ > は
      >「xicmp.exe」にコンパイル+実行をしたいファイルをドロップするか
      >ASファイルに関連づけしてください。
      だそうですから、つまり
      xicmp SourceFileName.as
      でなくてはならないのでしょう。

      \C は「選択文字列そのもの」を渡すわけですから駄目でしょう。
      xicmp \C
      じゃ、コマンドラインは
      xicmp FONT "MS ゴシック",12 ~~
      とかいう具合になっちゃいますから。当然エラーになるかと。


      手順としては
      1.選択されている範囲を一時作業ファイルに保存
      2.xicmp.exe に↑の一時作業ファイル名を付けて実行
      に しないとダメですね。

      でも手順1.が、サクラエディタ単体じゃ出来なさそうです...
      外部に他ののユーティリティを介せば可能ですが。。。
      • [2213] Re2: 範囲選択部分のみを「コンパイル+実行」 めろめろ 2002年08月20日 21:36

        > でも手順1.が、サクラエディタ単体じゃ出来なさそうです...
        > 外部に他ののユーティリティを介せば可能ですが。。。
        ご返事有難う御座います。
        \C→$Cでした。すみません。。。
        一時ファイルを作成するための、「他のユーティリティ」とは具体的に何か御座いますか?
        ご存知でしたら御教授願います。
        • [2214] Re3: 範囲選択部分のみを「コンパイル+実行」 すい 2002年08月21日 00:18

          >\C→$Cでした。すみません。。。
          私も気付きませんでした。(;^^ゞ

          >一時ファイルを作成するための、「他のユーティリティ」とは具体的に何か御座いますか?

          ここの過去の書き込み「2072:外部コマンドを使った文字列加工」が参考になります。
          そちらを見て下さい。そして clip.exe を入手して下さい。

          それを参考にして、作業としては、、、

          ※ 以下、Windows 95 での場合。
          ※ 以下は clip.exe をサクラエディタと同じ場所に入れた場合
            ( C:\Program Files\SAKURA\clip.exe )の例です。

          1.バッチを作成
          エディタで次の3行を打ち込み、C:\Program Files\SAKURA 内に HSPCMP.BAT という名前で保存。
          # 3行目、行頭の rem を削除してみて問題無ければ削除して下さい。
          # 2行目、C:\hogehoge\xicmp.exe の所はきちんと xicmp.exe のパスの記述にして下さい。
          ::--↓-- HSPCMP.BAT --↓--
          "C:\Program Files\SAKURA\clip.exe" p > %TEMP%\TEMPFILE.AS
          C:\hogehoge\xicmp.exe %TEMP%\TEMPFILE.AS
          rem del %TEMP%\TEMPFILE.AS
          ::------------------------
           % 1行目:クリップボードの内容を一時作業ファイル %TEMP%\TEMPFILE.AS に保存する。
           % 2行目:xicmp.exe に対して一時作業ファイル名を渡してコンパイルする。
           % 3行目:一時作業ファイル %TEMP%\TEMPFILE.AS を削除する。(↑上記記述では rem で注釈にして殺してあるけど)


          2.↑作成した HSPCMP.BAT のプロパティを出し、プログラム タブにて
          ・バッチファイル[       ] ← 余計な処理で時間食わないよう、空欄にしておく。(大して変わらないけど)
          ・実行時の大きさ[最小化の状態 ]
          ・[レ] プログラム終了時にウィンドウを閉じる ← チェックする
          に設定する。
           % バッチ実行時には目立たない最小化状態で動作し、かつ、終了時には
           % 自動的にウィンドウが消えて終るように設定している。


          3.マクロを作成。HSPCMP.MAC とか適当な名前で保存します。内容は以下の2行。
          //--↓-- HSPCMP.MAC --↓--
          S_Copy();
          S_ExecCommand( '"C:\Program Files\SAKURA\HSPCMP.BAT"', 0);
          //------------------------
           % 選択されている範囲をクリップボードに取り込んでから、
           % バッチ "C:\Program Files\SAKURA\HSPCMP.BAT" を実行する。


          で、マクロ HSPCMP.MAC を実行すれば。。。

          これはあくまで一例ですが、こんな感じでどうでしょうか?
          他にも色々な手段がありそうです。

          WinNT系 OS だとちょっと違う所があるかもしれませんが、私の手元には NT系 OS が
          無いので分かりません。異なる場合は色々試行錯誤して見てください。
          • [2215] Re4: 範囲選択部分のみを「コンパイル+実行」 xi 2002年08月21日 06:06

            初めまして、xiと申します。
            わざわざパッチファイルまで作って頂き感無量なのですが
            xicmp側で「クリップボード実行機能」を追加致しました。
            一応、ご報告までと思いまして・・・。(^-^;

            めろめろさん、というわけですので
            マクロファイルには

            S_Copy;
            S_ExecCommand('C:\HSP\xicmp.exe /clp',False);

            と、記述して下さい。m(_ _)m

            では、1ユーザーとしてSAKURAエディタの開発の進展を
            お祈りしています。
            • [2218] Re5: 範囲選択部分のみを「コンパイル+実行」 すい 2002年08月21日 12:45

              >xicmp側で「クリップボード実行機能」を追加致しました。
              >一応、ご報告までと思いまして・・・。(^-^;
                 チョキチョキチョキ
                  "(V)..(V)"
                   ミ( 略 )ミ
              >S_Copy;
              >S_ExecCommand('C:\HSP\xicmp.exe /clp',False);
              >
              >と、記述して下さい。m(_ _)m

              おお、ナイス!!です。
              # 案外存在しているのか? (サクラエディタユーザー && HSPユーザー)な人... :-P
    • [2217] 皆さんに感謝です。m(__)m めろめろ 2002年08月21日 12:44

      【すいさんへ】
      詳細に渡って記述して頂き有難う御座います。
      勉強のためにもがんばって理解しようと思います。

      【xiさんへ】
      他掲示板にまで来て頂き本当に有難う御座います。
      このように私のような"ぺーぺー"の要望を取り入れて下さることは非常に有り難く、感謝しております。
    • [2237] マクロがうまく機能しません(T_T)すいさん助けて~。 めろめろ 2002年08月28日 18:51

      試してみたンですが、うまくいかなくて。。。

      S_Copy;
      S_ExecCommand('C:\hsp\hsp255\xicmp.exe /clp',False);

      と記述したテキストファイルをマクロを選択するフォルダに置き、【登録済みマクロの実行】を行ったところ、【Line 1:は存在しない関数です】と表示されました。SAKURAは最新バージョンを使用してます。

      xiさんにも聞いてみたんですが、私の説明不足で解決出来てません。確認のために頭の"S_"も削除しましたが、ダメでした。何が悪いんでしょうか。どうか御教授願います。
      • [2238] RE: マクロがうまく機能しません(T_T)すいさん助けて~。 げんた 2002年08月28日 21:17

        >S_Copy;
        S_Copy();
        と()を付ける必要があると思います.
        • [2240] ご報告致します めろめろ 2002年08月29日 12:41

          ▼ げんたさん
          > >S_Copy;
          > S_Copy();
          > と()を付ける必要があると思います.
          有難うござます。Line1のエラーは消えました。
          今度は、【Line2:Colum 54:Syntax Error】と出ました。
          御手数かけて申し訳ありませんが、御教授願います。
          • [2241] Re: ご報告致します もか 2002年08月29日 13:18

            ▼ めろめろさん
            > > 今度は、【Line2:Colum 54:Syntax Error】と出ました。

            > S_ExecCommand('C:\hsp\hsp255\xicmp.exe /clp',False);
            は、S_ExecCommand('C:\hsp\hsp255\xicmp.exe /clp', 0 );
            で動くとおもいます。
          • [2242] Re: ご報告致します げんた 2002年08月29日 13:20

            >今度は、【Line2:Colum 54:Syntax Error】と出ました。
            False => 0 としてみてください.
            PPAではFalseもOKなのかな?ただのキーマクロでは整数と"or'で始まる文字列しか扱えません.
    • [2246] 大成功\(T_T)/感激 めろめろ 2002年08月29日 19:21

      皆さんのご指導でようやっと意味がわかりました。
      xiさん
      すいさん
      もかさん
      げんたさん
      全ての方に感謝致します。
      • [2247] もひとつ御教授願えませんかm(__)m めろめろ 2002年08月29日 20:25

        教えて頂いた方法なのですが、カレントディレクトリがxicmpと同じ場所になってしまいます。
        出来れば、範囲選択したスクリプトを記述したファイルと同じディレクトリを、カレントディレクトリとしたいんです。どうしたらよいのでしょうか。御教授願います。
        • [2249] RE: もひとつ御教授願えませんかm(__)m すい 2002年08月29日 22:40

          >教えて頂いた方法なのですが、カレントディレクトリがxicmpと同じ場所になってしまいます。
          >出来れば、範囲選択したスクリプトを記述したファイルと同じディレクトリを、カレントディレクトリとしたいんです。どうしたらよいのでしょうか。御教授願います。

          xicmp.exe 側で /clp と同時に使える
          「作業ディレクトリを指定できるオプション」
          が追加されれば楽ですが、と試しに言ってみる。
          PPA.DLL を使ったマクロなら編集中のファイル名をフルパスで取得出来ますので、
          それをコマンドライン渡しすることで...とか。

          でも、いっそ、その辺の処理をやる外部ツールを HSP で作っちゃう
          なんていう選択肢もありですね。

           1.sdim で、余裕を見て思いっきり大きなサイズの文字列変数を用意しておく。
           2.clipget でクリップボードの中身を↑の文字変数に(最大サイズを指定して)取得。
           3.cmdline に渡された文字列から作業ディレクトリの指示部を抜き出す。
            sdim tmpdir,300 ; しておいた tmpdir に作業ディレクトリ名を抜き出す。
            もし指定ディレクトリが存在しなければ、存在する場所を探す。
              例:指定が C:\TEXTPROG\TEST1.AS だったら
                 → C:\TESTPROG\TEST1.AS という*ディレクトリ*は?
                無い → C:\TESTPROG という*ディレクトリ*は?
                あった → tmpdir = C:\TESTPROG にする。
            残りの部分を起動するコマンドと見なし、
            sdim comnd,300 ; しておいた comnd に取り出す。
           4.カレントディレクトリを tmpdir に移動する。
            chdir tmpdir
           5.bsave で 2.の文字変数を適当なファイルに書き込んで保存。
            例えばファイル名 TEMP.TMP とか。
           6.↑5.で保存したファイル名をくっ付けて実行。↓こんなような雰囲気。
            sdim comm,1000
            comm = comnd + " " + "TEMP.TMP"
            exec comm

          みたいな感じのプログラムを HSP ででも作っておく。
          ソフトの名前を clip_go.exe とかで。

          で、あとはマクロ。HSPCMP.PPA とかいう名前のマクロで
          //------------------------
          // 実行には PPA.DLL が必須です。
          // マクロファイルの拡張子は .PPA でなくてはなりません。
          var
          fullpath:String;
          begin
          S_Copy();
          fullpath := S_GetFilename(); // フルパス
          S_ExecCommand( '"C:\hogehoge\clip_go.exe" /tmp ' + fullpath + ' "C:\WORKDIR\" "C:\hogehoge\xicmp.exe"', 0);
          end
          //------------------------
          を実行。みたいな感じで。


          こういう用途の事を考えると、サクラエディタのマクロ側に
          「選択範囲を指定ファイルに書き込む」
          とかいう機能があると外部ユーティリティ不要で、もう少しスッキリしそうですが。 :-(
          FileName = SelSave('C:\hoge.tmp'); // 選択範囲を指定ファイルに保存。
          FileName = SelSave(''); // 選択範囲を作業ディレクトリ %TEMP% 内の一時作業ファイルに保存し、一時作業ファイル名を返す。(作業ファイル名は自動生成される)
          みたいなのが。
          • [2256] Re2: もひとつ御教授願えませんかm(__)m xi 2002年08月31日 14:50

            ▼ すいさん
            > xicmp.exe 側で /clp と同時に使える
            > 「作業ディレクトリを指定できるオプション」
            > が追加されれば楽ですが、と試しに言ってみる。

            追加してみる。
            肝心のディレクトリに頭が回りませんでした。m(_ _)m

            めろめろさん、これで宜しいでしょうか?(^-^;
            では、何度も申し訳ありませんでした。

            ちなみに、編集中のファイルのディレクトリで実行するマクロです。
            (拡張子をppaとしてください。PPA.DLLもお忘れずに。)
            Delphi少し心得があるのでPPA.DLLは、大いに助かりますです。

            var
            Path, Dir :String;
            i :Integer;
            begin
            // フルパス→ディレクトリ取得
            Path := S_GetFilename();
            Dir := '';

            i := Pos('\',Path);
            while (i>0) do begin
            Dir := Dir + Copy(Path,1,i);
            Path := Delete(Path,1,i);
            i := Pos('\',Path);
            end;
            Dir := Delete(Dir,Length(Dir),1);

            // 選択範囲を実行
            S_Copy();
            S_ExecCommand('E:\HSP\xicmp.exe '+Dir+' /clp',0);
            end;
            • [2265] たびたび有難う御座いますm(__)m めろめろ 2002年09月02日 13:28

              > 追加してみる。
              有難う御座います。

              > ちなみに、編集中のファイルのディレクトリで実行するマクロです。
              もう完璧です。涙が止まりません v(TOT)v
        • [2253] 有難う御座いました めろめろ 2002年08月30日 13:08

          すいさん度々有難う御座います。
          よく読んで試したいと思います。
          またご報告致します。