
お世話になります。
秀丸Ver9.37で、ソースファイルの編集を行っています。
複数行を選択後に、下記マクロを実行すると、
選択した行に対してコメント追加をしたいです。
マクロを実行すると、「変数への代入がおかしいです」と表示されました。
見直し箇所を教えてください。
よろしくお願いいたします。
●マクロ実行前(下記の3行を範囲選択)
printf("test1");
printf("test2");
printf("test3");
●期待するマクロ実行結果
// (編集前)
//printf("test1");
//printf("test2");
//printf("test3");
// (編集後)
// 選択した行に対してコメント追加
#define HmMacro hmemacro
hmemacro {
// 選択範囲の内容を取得
$str = gettext(seltopx,seltopy,selendx,selendy);
// 選択範囲のテキストをコメント化して編集
outtext("// (編集前)\n");
outtext("//" + $str + "\n");
outtext("// (編集後)\n");
}
No.2ベストアンサー
- 回答日時:
No.1です。
ご質問文をよく読んでおりませんでした。
ほにゃらら
ほにゃらら
printf("test1");
printf("test2");
printf("test3");
ほにゃらら
ほにゃらら
のうち、
ほにゃらら
ほにゃらら
printf("test1"); ←ここを選択
printf("test2"); ←ここを選択
printf("test3"); ←ここを選択
ほにゃらら
ほにゃらら
という意味ですねっ
つまり
printf("test1"); ←ここを選択
printf("test2");
printf("test3");
の場合
// (編集前)
// printf("test1");
// (編集後)
printf("test2");
printf("test3");
になって、
printf("test1"); ←ここを選択
printf("test2"); ←ここを選択
printf("test3");
の場合
// (編集前)
// printf("test1");
// printf("test2");
// (編集後)
printf("test3");
になって、
printf("test1"); ←ここを選択
printf("test2"); ←ここを選択
printf("test3"); ←ここを選択
の場合
// (編集前)
// printf("test1");
// printf("test2");
// printf("test3");
// (編集後)
になるという意味で解釈をしました。
その場合、以下はどうでしょうか?
$BeginOfLine = "// ";
$Top = "// (編集前)\n";
$End = "// (編集後)\n";
if ( selecting == 1 )
{
escape;
#TargetLine = seltopy + 1;
#TopOfLine = seltopy + 1;
if ( selendx == 0 )
{
#EndOfLine = selendy;
}
else
{
#EndOfLine = selendy + 1;
}
movetolineno 1, seltopy + 1;
}
else
{
#TargetLine = lineno;
#EndOfLine = lineno;
}
gofileend;
#FileEndLine = lineno;
movetolineno 1, #TargetLine;
insert $TopOfLine;
movetolineno 1, #TargetLine;
while ( #TargetLine != #EndOfLine + 1 )
{
golinetop;
insert $BeginOfLine;
#TargetLine = #TargetLine + 1;
if ( #TargetLine >= #FileEndLine )
{
break;
}
movetolineno 1, #TargetLine;
}
movetolineno 1, #TopOfLine;
insert $Top;
movetolineno 1, #EndOfLine + 2;
insert $End;
risaghon さんへ
再度の回答ありがとうございます。
お陰様で期待通りの処理結果となりました。
感謝申し上げます。
さて、追加で質問よろしいでしょうか?
TopOfLine変数についてですが、10行目は数値型変数、33行目は文字列型変数のように見られます。
10行目: #TopOfLine = seltopy + 1;
33行目: insert $TopOfLine;
同一変数名で、数値型変数と文字列型変数の扱いに教えて頂ければ幸いです。
No.3
- 回答日時:
>33行目: insert $TopOfLine;
movetolineno 1, #TargetLine;
insert $TopOfLine;
movetolineno 1, #TargetLine;
このうち、2行必要ありませんね。
適宜削除して戴けますと幸いです。
今読んでて意味不明の行ですね。
No.1
- 回答日時:
秀丸懐かしいです。
パスが〇千円で…
私の秀丸がV8.xでしたので最新版を
入れてみましたがouttextがダメみたい
ですね。
以下ではどうでしょうか。
golinetop;
insert "(編集前)\n";
gofileend;
insert "(編集後)\n";
$str = gettext(seltopx,seltopy,selendx,selendy,0);
replaceall "^" , "// " , regular, nocasesense, nohilight;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
秀丸の置換がうまく動かない
その他(ソフトウェア)
-
なぜ、教えて!gooには、Windows11カテゴリーが
その他(OS)
-
プログラミングc++を全く分からない状態から習得するまでどれくらいかかりますか?なぜ難しいと言われて
C言語・C++・C#
-
-
4
sakuraエディターの検索
フリーソフト
-
5
PDFファイルの図をワードファイルに変更する方法を教えてください
PDF
-
6
Windows11 英語の警告文のようなものが出る症状
その他(OS)
-
7
写真をコピーしたら作成日時が、コピーした時刻になった
その他(OS)
-
8
スマホの容量の記号はなぜ二乗がついているのですか?
その他(コンピューター・テクノロジー)
-
9
Windows11を使って、DAWソフトの、CAKEWalkを使用している方、教えて下さい。
フリーソフト
-
10
Microsoft copilot使って何ができますか?
その他(OS)
-
11
添付URLの様なサイトを作るにはどうすればいいですか?※どんな技術が使われていますか
その他(プログラミング・Web制作)
-
12
添付URLの様な3Dが動くWEBサイトの作り方。※どんなツール。技術が使われているの?
その他(プログラミング・Web制作)
-
13
Excelの罫線を消す方法
Excel(エクセル)
-
14
スマホのデータをパソコンに送る
その他(ソフトウェア)
-
15
覚えることが少ないプログラミング言語を教えて下さい。
その他(プログラミング・Web制作)
-
16
秀丸エディターでの置き換え
その他(プログラミング・Web制作)
-
17
立ち上げているアプリを調べたい
フリーソフト
-
18
プログラム上での行のマージ方法
その他(プログラミング・Web制作)
-
19
fortran write文について マチンの公式で円周率を近似するプログラムを作っています。 wr
その他(プログラミング・Web制作)
-
20
Excelの区切り文字について質問です。 Excel機能にある、区切り文字を使う時に区切ったあとの書
Excel(エクセル)
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
音声文字入力の良いツール教え...
-
楽天のRMSでの画像登録について
-
YAMAHA TF3ミキサーについて
-
UbuntuでLibreOfficeが消えた。
-
パソコンソフトでお知恵を下さ...
-
CubesoftPDFはAdobe Acrobat Re...
-
Outlookのエラー表示について
-
既存のプログラムで拡張子HPGの...
-
SketchUp Freeのダウンロードの...
-
fastcopyについて
-
Ren'Py 8.0.3でプロジェクトの...
-
jtrim 1.53cが正常な動きをし...
-
新バージョンPDFでのスナップシ...
-
クリスタルディスクインフォは...
-
LibleOffice Calc のテキストボ...
-
Prishwallというソフト
-
スプレッドシートの作業範囲
-
webメールの表示について
-
ゆうちょ認証アプリが使えません
-
STEAM版BF4が起動しない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンソフトでお知恵を下さ...
-
Outlookのエラー表示について
-
STEAM版BF4が起動しない
-
既存のプログラムで拡張子HPGの...
-
jtrim 1.53cが正常な動きをし...
-
SketchUp Freeのダウンロードの...
-
ChatGPTの回答をコピーしても箇...
-
premiere「ディスク上のファイ...
-
Acronis True Image HD 2022の...
-
iTunesと似た機能のソフトを教...
-
Windows Media Playerが動作し...
-
スプレッドシートの作業範囲
-
コピー元とコピー先を同じにす...
-
ゆうちょ認証アプリが使えません
-
microsoft teamsの左のアイコン...
-
mp3 ファイルをCDに焼く無料ソ...
-
Google日本語で『賛否』が出ない
-
powerAutomateの使用メモリにつ...
-
CubesoftPDFはAdobe Acrobat Re...
-
Prishwallというソフト
おすすめ情報
risaghon さんの回答を参考に見直してみました。
// 選択した行に対してコメント追加
// 選択範囲の内容を取得
$str = gettext(seltopx,seltopy,selendx,selendy);
// カーソルを削除した範囲に戻す
moveto seltopx, seltopy;
// 選択範囲のテキストを削除
deleteline(1);
// 選択範囲のテキストをコメント化して編集
insert("// (編集前)\n");
insert("//" + $str);
insert("// (編集後)\n");
1行の選択後(printf("test1");の1行を選択)マクロを実行すると、期待通りの結果となりました。
// (編集前)
//printf("test1");
// (編集後)
printf("test2");
printf("test3");
しかし、複数行を選択後(printf("test1"); printf("test2"); printf("test3");の3行を選択)の
マクロ実行結果は、下記の結果となりました。
// (編集前)
//printf("test1");
printf("test2");
printf("test3");
// (編集後)
printf("test2");
printf("test3");