文字数(バイト数)によるページ分割No.26244
きさな さん 09/02/25 02:03
 
初心者な質問で申し訳ございません。

TXTファイルを任意の文字数、もしくはバイト数により分割、ないしは改ページ設定
する事は可能でしょうか?

ヘルプ及びマクロライブラリーを検索してみましたが、うまくHITしませんでした。

長文TXTファイルを、1P 2000文字で区切る または4KBに区切るというような機能を
探しています。

よろしくお願いします。

[ ]
RE:26244 文字数(バイト数)によるページNo.26245
秀丸担当 さん 09/02/25 12:15
 

>TXTファイルを任意の文字数、もしくはバイト数により分割、ないしは改ページ設定
>する事は可能でしょうか?

マクロライブラリを「分割」で検索すると、山紫水明さんのマクロがヒットしま
したが、目的と合うものかどうかわかりませんでした。
文字数/バイト数ごとに改ページを入れるようなマクロは見かけたことが無いよ
うな気がします。
もしかしたら知らないだけで、作られていた方もいるかもしれないですが。
秀丸エディタの基本機能としては、そういった機能は無いです。

「テキストファイル 分割」でWeb検索したら、幾つかヒットするものもあるよ
うです。

[ ]
RE:26245 文字数(バイト数)によるページNo.26246
Yossie さん 09/02/25 13:22
 
>>TXTファイルを任意の文字数、もしくはバイト数により分割、ないしは改ページ設定
>>する事は可能でしょうか?

以前に個人用途で文字数分割をするマクロを作ったことがありますので、そのときの
コードを乗せておきます。
バイト単位は残念ながらありません。


//----
#fepMode = imestate;
if (#fepMode) {
 imeswitch;
}
#devideLength = val(input( "分割文字数を半角数字で入力してください。\n(単位:
文字数)"));
if (#fepMode) {
 imeswitch;
}


if (#devideLength < 1) {
 message ("分割文字数の指定が正しくありません。");
 endmacro;
}

#hRootHidemaru = hidemaruhandle(0);
$fileExt = filetype;
$fileName = leftstr(basename2, strlen(basename2) - strlen($ext));
#num = 0;


gofiletop;
#flag = 1;

while (#flag) {

 #num = #num + 1;
 $devidedName = $fileName + "_" + str( #num ) + $fileExt;

 beginsel;
 right #devideLength;
 copy2;

 openfile "/h";
 paste;

 gofileend;
 if (x || y) {
  saveas $devidedName;
  setactivehidemaru #hRootHidemaru;
  #hHidemaru = hidemaruhandle(findhidemaru($devidedName));

 } else {
  #hHidemaru = hidemaruhandle(0);
  setactivehidemaru #hRootHidemaru;

 }

 closehidemaruforced(#hHidemaru);

 endsel;

 #xx = x; #yy = y;
 right #devideLength;
 #flag = result;
 moveto #xx, #yy;

}

message("分割処理が終了しました。");


[ ]
RE:26245 文字数(バイト数)によるページNo.26247
山紫水明 さん 09/02/25 20:18
 
 秀丸担当さん,

>マクロライブラリを「分割」で検索すると、山紫水明さんのマクロがヒットし
>ましたが、目的と合うものかどうかわかりませんでした。

 ライブラリの拙作マクロは少し目的が違うようです。
 区切る文字が行の途中にあった場合どう処理するか。その行を含むか否か,行
の途中でも区切るのか,改行文字を字数に入れるか,等々で違ってきます。
 分割は Yossie さんが提案されていますので,改ページする例を示しておきま
す。
 分割する文字が行の途中にあった場合はその行を含まない,また改行文字は含
まない仕様です。

//-----------------------------------------//
#number = 4000;
disabledraw;
gofiletop;
while( 1 ) {
    #bite = 0;
    while( 1 ) {
        #bite = #bite + linelen2;
        if( #bite > #number ) break;
        #line = lineno;
        movetolineno 1, lineno + 1;
        if( #line == lineno ) goto End;
    }
    insert "\x0c\n";
    #i = #i + 1;
}
End:
message str( #i + 1 ) + " 頁に分割しました。";
endmacro;
//-----------------------------------------//

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

[ ]
RE:26244 文字数(バイト数)によるページNo.26248
きさな さん 09/02/25 23:21
 
お三方とも、早急で適切なご指導ありがとうございました。
おかげさまで希望通りの操作が行えるようになりました。

ご多忙中にもかかわらず対応してくださり、本当にありがとうございました。

[ ]