添付ファイルの情報



[添付ファイル一覧] [全ページの添付ファイル一覧]

fileincrement.pls
格納ファイル名:attach/4D6163726F2FC5EAB9C62F313934_696E6372656D656E742E706C73
ページ:Macro/投稿/194
格納ファイル名:attach/4D6163726F2FC5EAB9C62F313934_696E6372656D656E742E706C73
MD5ハッシュ値:0cd2e4f4cba3c9d5bc9517c8a1b2d564
サイズ:1.8KB (1857 bytes)
Content-type:application/octet-stream
登録日時:2009/03/28 15:58:07
アクセス数:328
MD5ハッシュ値:0cd2e4f4cba3c9d5bc9517c8a1b2d564
fileincrement.pls
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
use strict;
use warnings;
 
use List::Util qw/max/;
 
if (IsTextSelected() == 0) {
    # not selected -> select previous line
    GoLineTop();
    BeginSelect();
    Jump(ExpandParameter('$y') - 1);
    BeginSelect();    # end select
}
 
unless (GetSelectColmFrom() == 1 && GetSelectColmTo() == 1) {
    MsgBox(sprintf(
		"select correctly!\nSelectColmFrom(%d) and SelectColmTo(%d) must be 1",
        GetSelectColmFrom(), GetSelectColmTo()
    ));
    exit(0);
}
 
my $y = max(GetSelectLineFrom(), GetSelectLineTo());
my $lines = abs(GetSelectLineFrom() - GetSelectLineTo());
 
# save selection
my $prev_line = GetSelectedString(0);
 
# save previous selection
Jump(GetSelectLineFrom());
BeginSelect();
Jump(ExpandParameter('$y') - $lines);
BeginSelect();    # end select
my $prev2_line = GetSelectedString(0);
 
# return cursor
Jump($y);
 
# split with numbers
my @prev2 = split(/(\d+)/, $prev2_line);
my @prev = split(/(\d+)/, $prev_line);
 
# check if they are analyzable
if (@prev2 != @prev) {
    MsgBox("can't analyze!");
    exit(0);
}
 
# inclement each element
my $result = '';
for (my $i = 0; $i < @prev2; $i++) {
    my $prev = $prev[$i];
    my $prev2 = $prev2[$i];
    
    if ($prev2 eq $prev) {
        # identical strings => copy it
        $result .= $prev2
    }
    elsif ($prev2 =~ /^\d+$/ && $prev =~ /^\d+$/) {
        # number => inclement it
        if (length($prev2) == length($prev) &&
            ($prev2 =~ /^0\d+$/ || $prev =~ /^0\d+$/))
        {
            # begins with 0 => format new string in the same way
            $result .= sprintf('%0*d', length($prev2), $prev + ($prev - $prev2));
        }
        else {
            # simple inclement
            $result .= $prev + ($prev - $prev2);
        }
    }
    else {
        MsgBox("can't analyze!");
        exit(0);
    }
}
 
# insert new string
InsText($result);
 
# select new string
BeginSelect();
Jump(ExpandParameter('$y') - $lines);
BeginSelect();    # end select




    


    ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS