|
▽ 2007/1/25 (木) 12:06:29 すす |
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; Lunascape 3.0.4) |
▼ maruさん
> なかなかお利巧な機能ですね。地道にマクロで挑戦するしか…。
ppaマクロ初心者が書いたらこんなになりました。
びっくりするぐらい遅いです。
var
mess:String; // メッセージ出力用変数
org_str,target,w_str:String; // 文字保存用変数
tmp1,tmp2,w_tmp:String; // 文字判定用ワーク変数
CRLF,TAB:String; // 制御コード保持用変数
byte:Integer; // 変換対象文字列サイズ
pt:Integer; // 変換対象文字列ポインター
t_flg:Integer; // インデント数
i_cnt:Integer; // インデント挿入用カウンター
f_flg:Integer; // '('のあと副問い合わせがある場合')'でインデント数を-2するフラグ
s_flg:Integer; // '('の前にキーワードがある場合改行するフラグ
begin
CRLF := '
';
TAB := ' ';
org_str := S_GetSelectedString(0);
byte := Length(org_str);
if (byte=0) then
begin
S_SelectAll();
org_str := S_GetSelectedString(0);
byte := Length(org_str);
end
;
pt := 1;
t_flg := 0;
f_flg := 0;
s_flg := 0;
target := '';
w_str := '';
while (pt <= byte) do
begin
tmp1 := Copy(org_str,pt,1);
tmp2 := Copy(org_str,pt,2);
if ((tmp1=' ') or (tmp1=TAB) or (tmp1=',') or (tmp2 = CRLF) or (tmp1='(') or (tmp1=')') or (tmp1 = ';') ) then
begin
|
|