[添付ファイル一覧]
[全ページの添付ファイル一覧]
- DUPLINC.PPA
- 格納ファイル名:attach/4D6163726F2FC5EAB9C62F313332_4455504C494E432E505041
- ページ:Macro/投稿/132
- 格納ファイル名:attach/4D6163726F2FC5EAB9C62F313332_4455504C494E432E505041
- MD5ハッシュ値:c4b4bcf90e367c1fc6ab8f2eccbaa300
- サイズ:3.6KB (3657 bytes)
- Content-type:application/octet-stream
- 登録日時:2006/07/30 04:30:25
- アクセス数:622
- MD5ハッシュ値:c4b4bcf90e367c1fc6ab8f2eccbaa300
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
83
84
85
86
| | // TAB=4
// 実行には PPA.DLL が必須です。sakura.exe と同じフォルダに PPA.DLL を入れておいてください。
// マクロファイルの拡張子は .PPA でなくてはなりません。
// DupLINC.PPA - DuplicateLine_INC
// 10進数 連番生成マクロ
// ★動作仕様
// ↓次のようなテキストがある場合( | がカーソル位置とします)
// --------------------------------------------------
// copy original.txt test|08.txt
// --------------------------------------------------
// ↓このマクロを実行すると、↓
// --------------------------------------------------
// copy original.txt test08.txt
// copy original.txt test|09.txt
// --------------------------------------------------
// という1行が増えます。そのまま何度もマクロの実行を続けると、
// --------------------------------------------------
// copy original.txt test08.txt
// copy original.txt test09.txt
// copy original.txt test10.txt
// copy original.txt test|11.txt
// --------------------------------------------------
// という具合に。。。
// なお、「カーソル位置より右の数値」が + 1 した値の行が増えていきます。
// 「カーソル位置より左の文字」は、たとえ数値であろうと無視して、そのままとなります。
//
// つまり、↓にて | の位置にカーソルがある場合は
// --------------------------------------------------
// copy original.txt test0|9.txt
// --------------------------------------------------
// ↓マクロを2回実行↓
// --------------------------------------------------
// copy original.txt test09.txt
// copy original.txt test010.txt
// copy original.txt test0|11.txt
// --------------------------------------------------
// となります。
var
n:Integer; // 作業用の整数数値変数 確保
nums:String; // カーソル位置の数値文字列を取り込む文字列変数 確保
numi:Integer; // 「↑nums を整数数値に変換した物」を格納する整数数値変数 確保
word,chr:String; // 作業用の文字列変数 確保
begin
S_DuplicateLine(0); // 行の二重化(折り返し単位)
S_MoveHistSet(0); // 現在位置を移動履歴に登録
//
S_MoveHistPrev(0); // 移動履歴: 前へ
// word 先頭の数値部分のみを nums に取り出す。<- 数値以外の部分まで StrToInt に投げると返値は強制的に 0 になっちゃうから、余計なゴミを消すわけさぁ。
nums := '';
for n := 1 to Length(word) do
begin
chr := Copy(word,n,1);
if( ( chr = '0' )or( StrToInt(chr) <> 0 ) ) then // word が数値文字('0'〜'9')である
nums := nums + chr // nums 末尾に chr を追加する。
else // 数値以外の文字だった場合
break // ループを脱出する。
;
end;
if ( nums = '' ) then exit; // 数値文字が無ければマクロ終了。
numi := StrToInt(nums); // nums を 10進数数値文字列とみなし、整数数値へ変換する。
// MessageBox( nums + '->' + IntToStr(numi) , '' , 0 ); // for Debug
numi := numi + 1; // increment ここで値を +1 している。ここを numi - 1 にすれば decrement版になるし、色々版できますな。ふぉっふぉっふぉっ。
word := IntToStr(numi); // numi を文字列に変換する。
// ↓書き込む数値文字列の前に、桁の不足分 '0' を追加する。
for n := Length(word) to (Length(nums) - 1) do word := '0' + word;
S_MoveHistSet(0); // 現在位置を移動履歴に登録
//
S_MoveHistPrev(0); // 移動履歴: 前へ
end;
|