キー操作によるペーストについてNo.08476
heikki さん 17/01/16 09:53
 
キー操作によるペーストについて
★以下本文があります
******************************
章001
_
001:…
002:…
〔連番で番号が続いています〕
029:…
030:…
031:…
章002
_
001:…
002:…
〔連番〕
050:…

章150

001:…
〔連番〕
150:…
******************************
★これを下記のように変換したいのです。
1章
1:1, …
1:2, …
〔連番〕
1:29, …
1:30, …
1:31, …
2章
_
2:1, …
2:2, …
〔連番〕
2:50, …

150章

150:1, …
〔連番〕
150:150, …
******************************
★そこで下記のキー操作から始めましたが、初めのpastで躓きました。
copy 文字が出ないで past そのままが出てしまいます。
 setcompatiblemode 0x0F;
 searchdown "章\\d\\d\\d" , regular, nocasesense, hilight;
 if( ! result )  beep;
 escape;
 moveto selendx , selendy;
 beginsel;
 left 3;
 copy;
 beginsel;
 finddown;
 begingroupundo;
 replaceall "^\\f\\d\\d\\d" , "paste:\\1" , regular, nocasesense, inselect,
hilight;
 if( ! result )  beep;
 endgroupundo 1;
 escapeinselect;
 hilightfound 0;
 searchdown "章\\d\\d\\d" , regular, nocasesense, hilight;
 if( ! result )  beep;
******************************
この場合、章のコピーとペーストはどのように扱えばよろしいでしょうか。
無事付けで申しわけありませんが、ご教授のほどよろしくお願いします。

[ ]
RE:08476 キー操作によるペーストについてNo.08478
山紫水明 さん 17/01/16 18:26
 
 heikkiさん,

>★そこで下記のキー操作から始めましたが、初めのpastで躓きました。
>copy 文字が出ないで past そのままが出てしまいます。

置換のダイアログに指定する文字列を paste 文で処理したいということでしょ
うが,ダイアログで直接 "paste" と書いてもそのまま出てくるだけです。
コピーした文字列をマクロで取り出すには,いったん文字変数に入れる必要があ
ります。
copy;以下を次のようにしたらいかがでしょう。

copy;
beginclipboardread;
$s = getclipboard;
beginsel;
finddown;
begingroupundo;
replaceallfast "^\\f\\d\\d\\d", $s + ":\\1" , regular,nocasesense,inselect;

マクロヘルプの「クリップボードと変数のやりとり 」を参照してください。

                    山紫水明
                    SANSHISUIMEI

[ ]
RE:08478 キー操作によるペーストについてNo.08486
heikki さん 17/02/20 16:47
 
山紫水明様
早速のお返事を頂きながら、大変遅い応答になりまして申し訳ございませんでした。
ご指摘くださったように、copyを挿入し試してみました。
//
setcompatiblemode 0x0F;
 searchdown "章\\d\\d\\d" , regular, nocasesense, hilight;
 if( ! result )  beep;
 escape;
 moveto selendx , selendy;
 beginsel;
 left 3;
//
copy;
beginclipboardread;
$s = getclipboard;
beginsel;
finddown;
begingroupundo;
replaceallfast "^\\f\\d\\d\\d", $s + ":\\1, " , regular,nocasesense,inselect;
//
 if( ! result )  beep;
 endgroupundo 1;
 escapeinselect;
 hilightfound 0;
 searchdown "章\\d\\d\\d" , regular, nocasesense, hilight;
 if( ! result )  beep;
きれいに、章と節を入れることができました。
ですが、わたしには、説明個所を読んでもほとんど理解できておりません。最終的に
文章最終行に 章◆ を入れておき、ストップさせたいのですが、
もうお手上げ状態です。もし助けていただけるなら大変有り難く存じます。ファイル
数が多くてマクロ以外方法が無いのですが…すべを知りません。

[ ]
RE:08486 キー操作によるペーストについてNo.08487
山紫水明 さん 17/02/20 22:03
 
 heikkiさん,

>最終的に文章最終行に 章◆ を入れておき、ストップさせたいのですが、

 これはどういうことでしょうか? お示しのサンプルでは最終行は
150:150, …
となっておりますが。

                    山紫水明

[ ]
RE:08487 キー操作によるペーストについてNo.08488
heikki さん 17/02/21 11:30
 
山紫水明様
自分勝手な文章の質問で相済みません。

サンプル行の
>150:150, …
は、数あるファイルの一例を挙げさせていただきました。

ファイルの中には、060:030, … が最終行もあります。ファイルによって数字がま
ちまちなのです。
そこで、最終行の認識として「章◆」を入れておき、停止させるつもりで入れました
が、それで良いのかまた、また方法も分かりません。

以前は、最終行に●を検出してできたのですが、
if ( code == 0x819c ){;  // 最終節の"●”の検出
ずいぶんと前のことで、今回、ご質問させていただいた次第です。
大変初歩的な内容になり申しわけございません。

[ ]
RE:08488 キー操作によるペーストについてNo.08489
山紫水明 さん 17/02/21 20:30
 
 heikkiさん,
>そこで、最終行の認識として「章◆」を入れておき、停止させるつもりで入れ
>ました

 ファイル全体を対象にするのであれば,最終行の認識は特に必要ないのではと
思いますが,途中の行で終わる必要があるのでしょうか。

                    山紫水明

[ ]
RE:08489 キー操作によるペーストについてNo.08490
colder さん 17/02/21 21:14
 
heikkiさん。
マクロが現在、どの程度までできているか分かりませんが、
似たような変換を行ないたいという要望が過去に出ています。
マクロ作成のヒントになれば幸いです。
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_4/x06789.html#6789


[ ]