• ベストアンサー

秀丸マクロについて

秀丸マクロ初心者です。 OS:XP(SP3)、秀丸:7.08を使っています。 テキストファイルのデータをファイルの先頭から一行ずつ 文字列型変数に読み込んでメッセージをだそうとしていますが うまくいきません。 コードのどこが悪いのか、もしくはもっと簡単にできるやり方などあれば 教えて頂けないでしょうか。 ■コード gofiletop; while (code != eof) { golineend; #end = x; golinetop; $str = gettext(x,y,#end,0); message $str; down; } endmacro;

noname#142160
noname#142160

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.2

>$str = gettext(x,y,#end,0); $str = gettext(x,y,#end,y); ではないですか? 私なら… golineend; $str = gettext(0,y,x,y); のあと… right; または、 moveto 0,y+1; ですかね。 golinetop; down; でもいいかも知れませんが。 最終行が改行で終わっていないと、 while (code != eof) が正しく動作しないかも知れない点にはご注意を。 # 私なら最初にgofileend;して最終行を取得しておきます。

noname#142160
質問者

お礼

正常に動作しました! ありがとうございます。

その他の回答 (1)

  • Knotopolog
  • ベストアンサー率50% (564/1107)
回答No.1
noname#142160
質問者

お礼

色々教えて頂きありがとうございました! 教えて頂いたサイトを参考に勉強します。

関連するQ&A

  • 【秀丸マクロ】IFの使い方

    秀丸マクロでの、IFの使い方が分かりません…。 秀丸でCSVデータの編集をしています。 "文字列1","文字列2","文字列3","文字列4","文字列5", のうち、文字列4だけを見て、条件に合致するものは『行ごと』削除したいんです。 調べて調べて、やっとこ↓までは書いたのですが、 gofiletop; while( code != eof ){ searchdown "^\"((.*?)\",){4}\"(.*?)\"(?\\1)"; deleteline; } IFがないので、これではぜーんぶ消えてしまいます。(苦笑) IFをどういった方法で追加すればよいのか、教えてください。 よろしくお願いします。

  • 秀丸のマクロ:こんなの作れますでしょうか?

    秀丸エディタv3.08(レジスト済)で、次のようなマクロを作りたいです.秀丸マクロ作成の経験はありませんが、C言語の経験が数年あります. - DOS上のバッチファイル mybatch.bat を呼び出すと、次のようなことをして欲しいと考えています - mybatch.batの中身は一行で、こんなイメージです.  hidemaru.exe tmp.txt /x a.mac - 更に a.macの中身はというと次のような作業をして欲しいのですが  (1) 立ち上がったら、いきなり、全選択(Ctrl-A) (2) クリップボードに(事前に入れておいた)データをいきなり貼り付け(Ctrl-V) (3) ファイルを、いきなり(上書き)保存 (4) いきなり終了させる. ヘルプを見たのですが、いまいちよく解りませんです(;_;). もしかして上のようなことは、できないのかな、と思ってしまいます. 秀丸のマクロを書くのは初めてで、さっぱり解りません.この領域に、詳しいかたどうぞ教えてください.よろしくお願いします. -------------------------------------------------------------- なお、もし(4)が不可能な場合は、秀丸を終了させないで置くつもりです. この場合は、次のことが知りたいです.  知りたいこと:「今さっきまで(1)(2)(3)等のような操作を受けてactiveだったが今は非activeの状態にされてしまった秀丸が一つだけあるとした場合、DOS窓からどのようなコマンドをうつと、その秀丸をactiveにできるか」を知りたいです. よろしくお願いしまうす.

  • 配列を返す

    ファイルから読み込んだ一行の文字列を読み込みカンマごとに区切って 返すというプログラムを関数化することで効率を図りたいと思います。 int main() { char buf[1000]; char *str; char *bufG; //ファイルを読み込む  while(fgets(buf,1000,fp) != NULL){//一行ずつ読む str = buf;//先頭アドレスを指す     bufG = //文字列を返す関数  ・  ・  ・ } } //文字列を返す関数 {    for(i = 0; *str != ',' && *str != '\0'; i++){ if(*str == '\n'){ bufG[i] = '\0'; } else{ bufG[i] = *str; } str++; } bufG[i] = '\0'; return bufG; } 前の質問で自動変数でこの関数を抜けたら廃棄になるというのは わかったんですが(そういう警告がでました) ここからどのようにすれば求めるプログラムになりますか? 引数とかちょとわからないので関数定義を書きませんでした。 (1)ファイルをよみこむ (2)一行ずつ読み込み文字列をbufにいれる (3)ポインタstrをbufの先頭アドレスにする (4)get_word関数にてポインタをずらしていき カンマがあればそこまでの文字列を返す (5)main関数に戻り変数に代入する (6)終端文字があるまで(4)ー(5)を繰り返す。 (7)さらに行数分繰り返す これらの一連の流れをやりたいのですが わかりません。

  • 秀丸マクロ =検索文字を文末まで置換=

    秀丸エディタのマクロを使って以下の処理を行おうとしました。 1.検索した文字の一行下の行をコピーし、   そのコピーした行末にコピーしたデータを貼り付ける。 2.最初に検索した文字に該当する次の文字の一行下の行をコピーし、   そのコピーした行末にコピーしたデータを貼り付ける。   (繰り返し。) 3.文末(EOF)まで2.の処理を繰り返す。 以下のマクロを作ってみました。 while(code != eof){ setcompatiblemode 15; searchdown "検索文字" , hilight; down 1; copyline; paste; finddown; すると、2.の処理まで正常に実行されるのですが、 検索文字がなくなった時点で2の処理がストップされる事がなく、 それ以降の行のすべてが文末(EOF)まで、コピー&ペーストの処理が 繰り返されます。 例:______________________________________________________ (元の文) ○○ ××× △△ ■■■ ○○ □□□□ ☆☆ (検索する文字) ○○ (マクロ実行後の文) ○○ ××× ××× △△ ■■■ ○○ □□□□ □□□□ ☆☆ ☆☆ ______________________________________________________ 上記の例でいうと、(元の文)の☆☆の部分が、(マクロ実行後の文)で ☆☆ ☆☆ となってしまってます。 この部分を ☆☆ のままにしたいのです。 マクロをどのように組めば実現できるのでしょうか。 よろしくお願いします。

  • 秀丸での正規表現

     秀丸エディタVersion 7.11、HMJRE.DLL V1.92 を使用しています。  下記上のような4行のテキストファイルから、数字以外で始まる行を空行に置換しようと思い、検索文字列を「^[^0-9].*」、置換文字列を「」(なし)に設定したのですが、3行目のx だけからなる行は削除されませんでした(下記下のようになりました。このとき、カーソルは変換後の2行目の一番左のx の右側にあります)。 置換前 >11111 > >xxxxx >[EOF] 置換後 >11111 >xxxxx カーソルは左端のx の右側 >[EOF]  11111 とxxxxx の間にもう1行空行を入れると、所望の動作となります。  正規表現の指定が間違っているのでしょうか。

  • 秀丸エディタで3つ質問

    秀丸エディタを、Windows 3.1からずっと使用し続けていますが、困っていることがあります。 ・ファイルの保存ダイヤログ  ファイルの保存ダイヤログを、何枚、何百枚秀丸エディタを立ち上げていても、1つにまとめることはできるでしょうか?  (タブ機能を使用せず・・) ・現在のカーソルの文字コード表示  現在のカーソルに文字コード表示 (「 」=スペースであれば 0x20)をタイトルバーに表示する方法はあるでしょうか? ・意図しないペーストの防止  秀丸エディタには、現在独自のクリップボードを持っているのですが、なぜか1ヶ月前や1年前(PC再インストールをしているのに)にコピーをした内容が貼り付けられることがあります。  できれば、これをPC起動時(=常駐秀丸起動時)にクリアする方法はあるでしょうか? よろしくお願いします。 #シェアウェアですが、該当カテゴリがないので、こちらに投稿しています。

  • Ruby while line = DATA.gets と DATA.each do |line| の違い

    DATA.each do |line| if /code,(.+)/=~line code=$1 elsif /name,(.+)/=~line puts "code=#{code} name=#{$1}" end end __END__ code,001 name,ipp code,002 name,opp 上記実行結果は以下の様に変数codeの値が出力されません。 code= name=ipp code= name=opp ところがプログラムの一行目をwhile line = DATA.getsに変更すると、以下の様に値が出力されます。 code=001 name=ipp code=002 name=opp どういう理屈なんでしょうか? 教えていただけませんか? また、DATA.each do |line|の書式で、変数code(DATAの一行前で代入した値)を有効にする方法はあるのでしょうか?

  • 秀丸の正規表現用DLLをDelphiから使いたい

    秀丸に同梱されている正規表現処理用DLL、HMJRE.DLLをDelphiで使用しようとしているのですが、 うまくいきません。 実行しようとすると「エントリーポイントが見つかりません」と表示されます。 ---------------------- function dllfuncstr(func:String;find_str:String;target_str:String;start_pos:Integer;replace_str:String;kind:Integer):String; external 'HMJRE.DLL'; ... procedure TForm1.Button1Click(Sender: TObject); var find_str, target_str, replace_str:String; start_pos, kind:Integer; begin find_str := '123'; target_str := Memo1.Lines[0]; start_pos := 0; replace_str := 'abc'; kind := 1;// Memo2.Lines[0]:= dllfuncstr('ReplaceRegularNoCaseSence',find_str,target_str,start_pos,replace_str,1); end; ----- 秀丸のヘルプにマクロから呼び出す場合の例 が次のように記載されています。 $s = dllfuncstr( "ReplaceRegular", "([a-z]+)([0-9]+)", "--abcdefg1234567--", 0, "\\2\\1" ); message $s; DelphiのバージョンはXE5です。

  • 入力した文字列の文字コードを16進数で出力

    入力した文字列の文字コードを16進数で出力するプログラムを作っているのですが 下のように記述してもどうしても最後にaが表示されてしまいます。 打開策、または何故aが表示されるのかを教えてください。 #include <stdio.h> main() { int str; while(1){ str=getc(stdin); if(str==EOF) break; printf("%x ",str); } return 0; }

  • syntax error, unexpected $end  の意味を教えてください

    教えてください、困っています。 コードを走らせると、以下のようなコメントが出ます。 「Parse error: syntax error, unexpected $end in C:\Program Files・・・・・.php on line 500」 最後の終わり方が文法エラーといってるようなのですが、</body></html>で終わっており、{ }の書き方も問題ありません、 他に考えられる原因はどのようなものがあるのでしょうか。 Editorは秀丸を使っています。 いくら考えても分かりません。 最後には[EOF]がついていますが何か関係しているのでしょうか。 [EOF]がついての設定ミスとかが原因でしょうか。 途中に書いている表示のコードは正常にブラウザからみれますが、このコードのところに来ると上記のようなエラーメッセージがブラウズされます。 また、[EOF]の表示等の設定はどのように設定しておけばよいのでしょうか。

    • ベストアンサー
    • PHP

専門家に質問してみよう