標準出力ウィンドウを一つにNo.03310
kiki さん 02/09/01 05:22
 
はじめまして。kikiと申します。

現在、JDKを使用して開発を行っています。

マクロからjavacを起動してコンパイルしています。
run "javac filename > con";
(failenameの部分は適当です。)

エディタはサクサク動くし、機能は豊富でバンバンザイ
なのですが、一つだけ何とかならんかなぁというのがあ
ります。

それは、先の">con"としていると、コンパイルの度に
ウィンドウが起動されてしまうことです。
できれば、UNIXのコンソールみたいに、固定ウィンドウ
へいつも出力してくれるとうれしいのですが、この様な
ことはできないでしょうか?

よろしくお願いいたします。

以上です。

[ ]
RE:03310 標準出力ウィンドウを一つにNo.03311
山紫水明 さん 02/09/01 17:07
 
 kikiさん,こんにちは。

》できれば、UNIXのコンソールみたいに、固定ウィンドウ
》へいつも出力してくれるとうれしいのですが、この様な
》ことはできないでしょうか?

 JDK もjavac も知らない私がしゃしゃり出るのもなんですが,次のような方法
ではいかがでしょう。

//-----------------------------------------------//
//上書きしてもかまわない場合
$file = "D:\\Temp\\Temp.txt";//出力ファイル名
run "javac filename > " + $file";
openfile $file;
endmacro;
//-----------------------------------------------//

上記では具合悪い場合
//-----------------------------------------------//
$file = "D:\\Temp\\Temp.txt";//出力ファイル名
menu "&a このウィンドウに出力",
     "&b 指定ファイル追加出力";
#r = result;
if( #r < 1 ) endmacro;
else if( #r == 1 ) goto Current;
if( filename2 != $file ) {
    #a = findhidemaru( $file );
    if( #a == -1 ) openfile $file;
    else setactivehidemaru #a;
}
question "このウィンドウでいいですか?";
if( result == no ) endmacro;
Current:
#handle1 = hidemaruhandle( 0 );
run "javac filename > con";
message "タスクバーに実行結果のアイコンが現れたら OK を押してください";
setactivehidemaru 1;
#handle2 = hidemaruhandle( 0 );
selectall;
copy;
setactivehidemaru #handle1;
gofileend;
paste;
closehidemaru #handle2;
endmacro;
//-----------------------------------------------//

 多分もっとスマートな方法があるかもしれませんが,とりあえず。

     では, (^^)/~
                                        山紫水明

[ ]
RE:03311 標準出力ウィンドウを一つにNo.03312
encodingshiftjis さん 02/09/01 23:29
 
kikiさん,こんばんわ。
Windows の基本発想にはコンソールが無いのですが

// save
// conout.TXT を開いておいて、(秀丸 Path 処理は省略)
setactivehidemaru findhidemaru("conout.TXT");
gofiletop;beginsel; // con の出力点を作る,前に積む場合
run "javac  >con";

選択範囲に con の出力が出ます。

[ ]
RE:03312 標準出力ウィンドウを一つにNo.03314
kiki さん 02/09/02 00:41
 
#さっき、ソースを間違えたしまったので、取り消しました。

山紫水明さん
encodingshiftjisさん

お返事、ありがとうございました。

いやー、やっぱり相談って貴重ですね。
1週間、仕事の合間に四苦八苦&五里霧中だったのが
本当に出来るとは・・・。

結果からいうと、お二人に教えていただいて方法を両方
つかわせていただきました。
#ちゃっかり、いいとこ取りさせていただきました。(^^;

なるほどねぇ。やっぱ秀丸は熟成してますね。
こんな方法があるとは。

仕様としては。
--------------------------------------------------
1.コンパイルの結果出力なので、毎回特定ウィンドウに
  でること。
  #よって、ウィンドウの確認は必要ないし、上書きで
   上等です。
2.テンポラリファイルへ出力した内容で、ウィンドウを
  更新すること。
3.今回のメイン。コンソールウィンドウを複数上げたく
  ない。
--------------------------------------------------

コンパイルマクロの実行で、以下の様にしました。
--------------------------------------------------
//出力ファイル名
$file = "C:\\Temp\\Compile.con";

// javacの実行(ここは、なんでもありですね。)
run "javac filename > " + $file";

// コンソールウィンドウの番号を取得
#conwinno = findhidemaru($file);
if( #conwinno != -1 )
{
// ウィンドウが開いている場合は、フォーカスを変更
setactivehidemaru #conwinno;

// ファイルを再読込
loadfile $file;
}
else
{
// ウィンドウが開いていない場合は、開く。
openfile $file;
}
--------------------------------------------------

あとは、標準出力もフックできれば・・・。
うお! " 2> "でええんだ!!!
こんどやってみよ。

環境としては、Win2000+秀丸V3.17で確認しています。
多分、環境依存の部分はないと思うのですが・・・。
どうかな。

マクロ、たのしぃ。(^^)v
CもC++もJAVAも好きだけど、コンパイルの必要も無いし、
エディタに特化しているし、すぐ確認できるし。

ありがとうございました。(^人^)


[ ]
RE:03314 標準出力ウィンドウを一つにNo.03315
kiki さん 02/09/02 02:36
 
最終的に、こんな風にしてみました。
コンソールということは、前回分も残していたほうがいいかなと。

$STDOUTFILE = "C:\\Temp\\HidemaruStdout.con";//出力ファイル名
#CONWIDTH = 100;
#CONHIGHT = 20;

//先ほどのRUNの実行の後
if( #winno != -1 )
{
setactivehidemaru #winno;
gofileend;

insert "\n------------------------------------------------------------------
--------------\n";
insertfile $STDOUTFILE;
save;
}
else
{
openfile $STDOUTFILE;
setwindowsize #CONWIDTH, #CONHIGHT;
setwindowpos cxscreen - windowcx, cyscreen - windowcy - 50/*50は適当ぉ*/;
}

ではでは。

[ ]
RE:03310 標準出力ウィンドウを一つにNo.03379
kiki さん 02/09/16 13:42
 
kikiです。
MAKEの実行も問題無くできました。
出来上がってみると、えらいアッサリしたソースになりました。
私のソフト開発の基本方針「あっさりしたソースで、利便性よく。」
を守れました。

ご協力いただいたみなさまに感謝いたします。
#これで、今後の開発も楽しくできそうです。(^^)v

ファイルのアップというのをやったことが無いので、
こちらへ上げさせていただきました。

ご利用いただけると、うれしいです。

またの機会がありましたら、よろしくお願いいたします。

<PRE>

////////////////////////////////////////////////////////////
// MAKE実行マクロ RUNMAKE.mac Ver. 1.00
//
// 実行環境:windows2000Professional SP2
// Copyright: kiki 2002/09/09
// Modified  yyyy/mm/dd
//
// UNIXのコンソール画面をイメージして、JAVAコンパイルの結果
// を、常に一つの画面(秀丸)へ出力する。
// この基本方針さえ守れば、別にJAVAコンパイルだけとも限らな
// なぁ・・・。本当にコンソール画面のようになってきた。(^^;
//
// こちらでお世話になったので、結果をアップします。
// 改変自由っす。責任も放棄。よろしゅうに。
//
// サブルーチンCheckFileTypeは、以前にどなたかのマクロで紹介
// していただいてものを、そのまま流用させていただいています。
// 作成者の方、ごめんなさい。お名前が分からなくなってしまっ
// て・・・。
//
// ファイルパスの設定や、コンパイラの呼び出しが失敗すると、
// $STDOUTFILEへの書き込みが失敗します。「既にオープンしてい
// ます。」とかなんとか?
// 原因はよく分かっていません。
//
// このRUNMAKE.macの前のバージョンとして、javac.exe起動マクロ
// JAVACOMPILE.MACも作成しました。
// (MAKEコマンドが実行できない環境用)
// このファイルから好きに改造してもらえればいいとも考えますが、
// ご要望があれば、アップしたいと思います。
//
// 最後に。
// ご協力いただいた皆様に感謝いたします。
// ありがとうございました。
//
////////////////////////////////////////////////////////////

//----------------------------------------------------------
// メイン
//----------------------------------------------------------
//
// 開発環境の定義
//
$CONSOLENAME = "Console.con";
$STDOUTFILE = "C:\\Temp\\HidemaruStdout.con";               //出力ファイル名
#CONWIDTH = 100;
#CONHIGHT = 10;
#POSYSPAN = 0;
//
// ($DEVROOTにmakefileを作成。)
$DEVROOT      = "C:\\TKRVSSWORK2002\\cusp\\develop\\java\\";
//
//******************************************************//

//----------------------------------------------------------
//  コンパイル
//----------------------------------------------------------
    // ファイル拡張子を確認
    call CheckFileType basename, ".java";
    if (!##return) endmacro;

    // 更新されていたら保存する。
    //if( updated == true )  save;
    saveupdatedall;                     // 更新分を全て保存

    // コンパイル実行
    $COMANDLINE = "cmd.exe /c \"cd " + $DEVROOT + "&&nmake\"";      // ビル
ドバージョン

    run $COMANDLINE  + " > " + $STDOUTFILE;;

    // *********************************************************************
****
    // 今回のノウハウ(コンソールもどき画面作成)
    // *********************************************************************
****
    //
    // 処理結果の表示
    #winno = findhidemaru($CONSOLENAME);
    if( #winno != -1 )
    {
        setactivehidemaru #winno;
        gofileend;
    }
    else
    {
        openfile "";
        changename $CONSOLENAME;

        // この辺の定義は、趣味の世界・・・。
        setwindowsize #CONWIDTH, #CONHIGHT;
        setwindowpos cxscreen - windowcx, cyscreen - windowcy - #POSYSPAN;
    }

    insert "\n--------------------------------------------------------------
------------------\n";
    insert "COMMAND;>" + $COMANDLINE + "\n";
    insert "\n--------------------------------------------------------------
------------------\n";
    insertfile $STDOUTFILE;
    insert "command end.\n\n";
    save;
    //
    // *********************************************************************
****
    // ここまで。
    // *********************************************************************
****

// マクロの終了
endmacro;

//----------------------------------------------------------
//  サブルーチン
//----------------------------------------------------------

//----------------------------------------------------------
//  拡張子審査
//
//     $$1:ファイル名  $$2:拡張子
//----------------------------------------------------------
CheckFileType:
    ##resultno = strstr($$1, $$2);
    if (##resultno == -1){
        message "javaファイルじゃ、ねっす!(" + $$1 + ")";
    return false;
    }
return true;

</PRE>

[ ]