■掲示板に戻る■ ■過去ログ倉庫一覧■

やる夫スレ作成に役立つツールやTipsを紹介するスレ 2
1 ◆2MbZnrMECE:2011/08/02(火) 23:14:34 ID:vWwzjoA2



                  ...:::: :::や .は こ
             ::.:::::::::::::::る  て の             {::::::{
           :::::::.:::::::::::::::夫  し        _ ,−v   、::::::、
          ::: ::::::::::::::::::::::::坂  な      ._/rァ  ̄ヽn  ヽ::::::ヽ
      ::::: :::::: :.:::::::.:::::::::::::::.を  く     .-こヽ__)ヽ へフ -‐':::::::::::}
       .::::::::::::::.::: :.:::::::::::::::.よ 遠   /::::::://, 7′:::::::::::::::::::::/
          .::::...:::. ::::_n...:: ..い  ..、:::::::::ー' //-‐  ば の よ オ
         . . :::::::.:::::`ニl lニ        ヽ::::://\   か ぼ う  レ
        .::::::::::::::::::::::`フ \:::::::::ヽ __ ノ:::ー':::::::::::::ヽ  り  り や は
           .::::::::./'´|_|`ニ_::::::::::::::::::::::::::::::::::::::::::::::l  だ は く
         ........ :: :::::::::::ノ'r三7/::::::::::::::::::::::::::::::::::::::::::::::} か じ
           ...:::::::::::::::`フ, 匸/l::::::::::::::::::::::::::::::::::::::::::::/  ら め
             :::::: ̄´::: ̄´:::::::::::::::::::::::::::::::::::::::./   な  た


やる夫スレ製作において作業効率の向上に役立つツールやTipsなんかを紹介したり、
情報を持ち寄ったりするスレです


▼前スレ
http://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1307817465/

▼まとめ 「やる夫まとめも」様
http://blog.livedoor.jp/matomemo3/archives/cat_132400.html

2小さな名無しさん@この板は300レスまで:2011/08/02(火) 23:14:59 ID:vWwzjoA2

▼ツール

(´д`)Edit
http://edit_.kuronowish.com/
AAの作成に特化したエディタ。何はなくともまずこれ。

渡世AA人
http://www.geocities.jp/hatago2ya/
2枚のAAを極力ズレ無く合成する。他、AAの部分切り出し機能も。
これもとりあえず入れとけ、なツール。

AAviewer
http://mukankei151.blog47.fc2.com/blog-entry-2975.html
ツリー表示とワンクリックコピペ、一度使ったAAの履歴を取るのが特長のAA管理ソフト。

OrinrinEditor
http://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1311094617/
上記AAviewerの作者さんによる、(´д`)Edit+渡世AA人なAA/AAスレ作成編集ソフト。
まだまだ発展途上ですが精力的に更新されており、今後に期待です。

麻雀牌AA作成支援機
http://jbbs.livedoor.jp/bbs/read.cgi/otaku/12368/1304172446/
麻雀牌AAの作成に特化したツール。

やおこまみれ
http://yaoco.gnk.cc/index.php?FrontPage
管理人さんが作成された、便利な(´д`)Editのスクリプトが置いてます。

3小さな名無しさん@この板は300レスまで:2011/08/02(火) 23:15:31 ID:vWwzjoA2

▼リンク

やる夫.jp:やる夫スレ作成参考作品
http://blog.livedoor.jp/nyusokudeyaruo/archives/882397.html

やる夫まとめも内、「やる夫スレ作成のために」カテゴリ
http://blog.livedoor.jp/matomemo3/archives/cat_123384.html

4小さな名無しさん@この板は300レスまで:2011/08/02(火) 23:28:40 ID:jSCERCxQ
立て乙

いつも助かってます

5小さな名無しさん@この板は300レスまで:2011/08/02(火) 23:29:30 ID:9tF9sgdw
立て乙です!
いつもお世話になってます

6小さな名無しさん@この板は300レスまで:2011/08/02(火) 23:44:38 ID:P/3PyLvs
スレ立て乙です

7小さな名無しさん@この板は300レスまで:2011/08/03(水) 02:02:38 ID:35cs813U
スレ立て乙

渡世AA人スクリプトの導入は、(´д`)Editに普通に入れればいいの?

8 ◆2MbZnrMECE:2011/08/03(水) 21:35:55 ID:ZIHn2uU6
えー、すいません。
昨日前スレでUpした文字AAスクリプトですが不具合がありまして、ズレを埋めるスペースを作る時
余分なドットが入り、1dotを超えてズレが生じてしまうという現象が起こってました。

修正しましたので、お手数ですが前スレ289を次のレスの内容に差し替えお願いします。
後でロダにも上げときます。

9 ◆2MbZnrMECE:2011/08/03(水) 21:36:12 ID:ZIHn2uU6
-------------------------------------------------------
function GetSpaceWidth( W : Integer ) : Integer;
begin
repeat
if W mod 11 = 0 then break
else if W mod 16 = 0 then break
W := W - 16;
if W = 5 then break
else if W = 8 then break
else if W = 13 then break;
until ( W mod 11 ) < 0;
Result := W;
end;

function GetSpace( W : Integer; Dt : String ) : String;
var
S : String;
I, IC : Integer;
begin
if W mod 11 = 0 then begin for I := 1 to W/11 do S := S + ' '; S := S + Dt; end
else if W mod 16 = 0 then begin for I := 1 to W/16 do S := S + '  '; S := S + Dt; end
else if W < 2 then S := ''
else if W < 4 then S := '.'
else if W < 7 then S := ' '
else if W < 10 then S := ' .'
else if W < 13 then S := ' '
else if W = 13 then S := ' . '
else if W = 18 then S := '  .'
else if W mod 16 = 5 then begin for I := 1 to W/16 do S := S + '  '; S := ' ' + S; end
else if W mod 16 = 8 then begin for I := 1 to W/16 do S := S + '  '; S := S + '. '; end
else if W mod 16 = 13 then begin for I := 1 to W/16 do S := S + '  '; S := ' ' + S + '. '; end
else
begin
repeat
W := W - 16;
IC := IC + 1;
until ( W mod 11 = 0 );
for I := 1 to ( W / 11 ) do S := S + ' ';
for I := 1 to IC do S := S + '  ';
S := S + Dt;
end;
Result := S;
end;

function InputCharaAA( S0, S1, SP : String ) : String;
var
Dt : String;
SL0, SL1 : TStringList;
I, I0, L, W, TWdth : Integer;
begin
SL0 := TStringList.Create;
SL1 := TStringList.Create;
try
SL0.SetText( S0 );
SL1.SetText( S1 );
while SL0.Count < SL1.Count do SL0.Text := SL0.Text + #13#10;
while SL0.Count > SL1.Count do SL1.Text := SL1.Text + #13#10;

for I := 0 to SL0.Count - 1 do
if GetTextWidth( SL0.Strings[i] ) > TWdth then TWdth := GetTextWidth( SL0.Strings[i] );

TWdth := TWdth + GetTextWidth( SP );

for I := 0 to SL0.Count - 1 do
begin
W := TWdth - GetTextWidth( SL0.Strings[i] );
if ( W > 13 ) and ( GetSpaceWidth(W) < 0 ) then
begin
if GetSpaceWidth( W-3 ) > 0 then begin W := W - 3; Dt := '.'; end
else if GetSpaceWidth( W-1 ) > 0 then W := W - 1
else if GetSpaceWidth( W+1 ) > 0 then W := W + 1;
end;
SL0.Strings[i] := SL0.Strings[i] + GetSpace( W, Dt );
Dt :='';
end;

for I := 0 to SL0.Count-1 do SL0.Strings[i] := SL0.Strings[i] + SL1.Strings[i];
Result := SL0.Text;
finally
SL0.free;
SL1.free;
end;
end;

function DelEndSpAndDot( S : String ) : String;
begin
repeat
S := S + #13#10;
S := ReplaseStr( S, '.' + #13, #13 );
S := ReplaseStr( S, ' ' + #13, #13 );
S := ReplaseStr( S, ' ' + #13, #13 );
until StrCount( S, '.' + #13 ) + StrCount( S, ' ' + #13 ) + StrCount( S, ' ' + #13 ) = 0;
Result := TrimRight( S );
end;

10 ◆2MbZnrMECE:2011/08/03(水) 21:39:15 ID:ZIHn2uU6

変更後のコードは、
>>9

http://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1307817465/290-294
の順番になります。

ソースコードを直接編集する場合は、72行目の下(" SL0.Strings[i] := SL0.Strings[i] + GetSpace( W, Dt );" と " end;" の間)に
以下の1行を加えるだけでOKです。
------------------
Dt :='';
------------------


以下、アップローダーに上げたスクリプトファイル本体です。
http://loda.jp/yaruogazou/?id=1446.zip



ちょっとテストが不十分でした。
昨日の今日で申し訳ありません。

11 ◆2MbZnrMECE:2011/08/03(水) 21:47:10 ID:ZIHn2uU6

>>7
質問の意味が良く分かりませんが、スクリプトの導入ならこの辺を参考にやってみてください。

http://blog.livedoor.jp/matomemo3/archives/3640334.html
http://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1307817465/19-


それでもよく分からなかったら、どこで詰まったのか出来るだけ明確にして
また聞いて下さい。

12 ◆2MbZnrMECE:2011/08/06(土) 01:24:13 ID:nNPudv2c
また不具合が見つかったんでコソーリ更新。

AA間の隙間を埋めるとき、全・半角スペースだけで作れる幅なのに
ごく稀にドットが紛れ込んでしまう、というミスがあったのを修正しました。


修正ついでに以下二点の機能を追加してます。

 ・ ドロップダウンメニューで文字AAのセットを変更するのと同時に、
  プレビュー画面のAAも即座に切り替わるようにした

 ・ 入力欄にショートカットキーを追加
   Ctrl + Shift + N … カーソル位置に改行コード(\n)を挿入
   Ctrl + Shift + S … カーソル位置に半角スペース(\ )を挿入
   Ctrl + Shift + E … 入力欄をクリア

 キーを押す度に警告音が鳴るかもしれませんが、それは仕様とさせて下さい。


-------------------------------------------------------
function GetSpace( W : Integer ) : String;
var
W0, I, IC : Integer;
S : String;
begin
if W < 2 then S := ''
else if W < 4 then S := '.'
else if W < 7 then S := ' '
else if W < 10 then S := ' .'
else if W < 13 then S := ' '
else if W = 13 then S := ' . '
else if W = 15 then S := '  '
else if W = 18 then S := '  .'
else for I := 0 to W/16 do
begin
W0 := W - 16 * I;
if W0 mod 11 = 0 then begin for IC := 1 to W0/11 do S := S + ' '; for IC := 1 to I do S := S + '  '; break; end
else if W0 = 0 then begin for IC := 1 to W/16 do S := S + '  '; break; end
else if W0 = 5 then begin for IC := 1 to I do S := S + '  '; S := ' ' + S; break; end
else if W0 = 8 then begin for IC := 1 to I do S := S + '  '; S := S + '. '; break; end
else if W0 = 13 then begin for IC := 1 to I do S := S + '  '; S := ' ' + S + '. '; break; end;
end;
Result := S;
end;

function InputCharaAA( S0, S1, SP : String ) : String;
var
Dt : String;
SL0, SL1 : TStringList;
I, W, TWdth : Integer;
begin
SL0 := TStringList.Create;
SL1 := TStringList.Create;
try
SL0.SetText( S0 );
SL1.SetText( S1 );
while SL0.Count < SL1.Count do SL0.Text := SL0.Text + #13#10;
while SL0.Count > SL1.Count do SL1.Text := SL1.Text + #13#10;

for I := 0 to SL0.Count - 1 do
if GetTextWidth( SL0.Strings[i] ) > TWdth then TWdth := GetTextWidth( SL0.Strings[i] );

TWdth := TWdth + GetTextWidth( SP );

for I := 0 to SL0.Count - 1 do
begin
W := TWdth - GetTextWidth( SL0.Strings[i] );
if ( W > 13 ) and ( GetSpace( W ) = '' ) then
begin
if GetSpace( W-3 ) <> '' then begin W := W - 3; Dt := '.'; end
else if GetSpace( W-1 ) <> '' then W := W - 1
else if GetSpace( W+1 ) <> '' then W := W + 1;
end;
SL0.Strings[i] := SL0.Strings[i] + GetSpace( W ) + Dt;
Dt :='';
end;

for I := 0 to SL0.Count-1 do SL0.Strings[i] := SL0.Strings[i] + SL1.Strings[i];
Result := SL0.Text;
finally
SL0.free;
SL1.free;
end;
end;

function DelEndSpAndDot( S : String ) : String;
begin
repeat
S := S + #13#10;
S := ReplaseStr( S, '.' + #13, #13 );
S := ReplaseStr( S, ' ' + #13, #13 );
S := ReplaseStr( S, ' ' + #13, #13 );
until StrCount( S, '.' + #13 ) + StrCount( S, ' ' + #13 ) + StrCount( S, ' ' + #13 ) = 0;
Result := TrimRight( S );
end;

13 ◆2MbZnrMECE:2011/08/06(土) 01:24:28 ID:nNPudv2c
var

Form : TForm;
Memo1, Memo2 :TMemo;
Panel1, Panel2, Panel3 : TPanel;
Edit : TEdit;
Button1, Button2, Button3, Button4, Button5, Button6, Button7, Button8, Button9, Button10 : TButton;
Radio: TRadioGroup;
CheckBox : TCheckBox;
ComboBox1, ComboBox2 : TComboBox;
FtKd, FName : String;
Ft, Ch : array of String;
SL: TStringList;
I, NPos, FtSz, EdtPos : Integer;


procedure EditExit(Sender : TObject);
begin
EdtPos := Edit.SelStart;
end;

procedure EditChangeText( Sender : TObject );
var
S, CR, SP : String;
L, I : Integer;
begin
if Radio.ItemIndex = 0 then
begin
for L := 1 to Length( Edit.Text ) do
begin
if copy( Edit.Text, L, 2 ) = '\n' then CR := CR + #13#10;
if copy( Edit.Text, L, 2 ) = '\ ' then SP := SP + ' ';
if copy( Edit.Text, L, 2 ) = ' ' then SP := SP + ' ';
for i:= 0 to GetArrayLength( Ch )-1 do
begin
if copy( Edit.Text, L, 2 ) = Ch[i] then
begin
S := InputCharaAA( S, CR + Ft[i], SP );
CR:= '';
SP := '';
end;
end;
L := L + 1;
end;
end

else if Radio.ItemIndex = 1 then
begin
for L := 1 to Length( Edit.Text ) do
begin
if copy( Edit.Text, L, 2 ) = '\n' then CR := CR + #13#10;
if copy( Edit.Text, L, 2 ) = '\ ' then SP := SP + ' ';
if copy( Edit.Text, L, 2 ) = ' ' then SP := SP + ' ';
for i:= 0 to GetArrayLength( Ch )-1 do
begin
if copy( Edit.Text, L, 2 ) = Ch[i] then
begin
S := S + CR + SP + ReplaseStr( Ft[i], #10, #10 + SP ) + #13#10;
CR := '';
SP := '';
end;
end;
L := L + 1;
end;
end;

Memo1.Text := S;
end;

procedure ButtonFullSp( Sender : TObject );
var
S : string;
begin
S := Edit.Text;
Insert( ' ', S, EdtPos+1 );
Edit.Text := S;
EdtPos := EdtPos + 2;
end;

procedure ButtonHalfSp( Sender : TObject );
var
S : string;
begin
S := Edit.Text;
Insert( '\ ', S, EdtPos+1 );
Edit.Text := S;
EdtPos := EdtPos + 2;
end;

procedure ButtonCR( Sender : TObject );
var
S : string;
begin
S := Edit.Text;
Insert( '\n', S, EdtPos+1 );
Edit.Text := S;
EdtPos := EdtPos + 2;
end;

14 ◆2MbZnrMECE:2011/08/06(土) 01:24:43 ID:nNPudv2c
procedure ButtonClear( Sender : TObject );
begin
Edit.Clear;
end;

procedure ButtonInsert( Sender : TObject );
begin
InputBoxStr( DelEndSpAndDot(Memo1.Text) );
end;

procedure ButtonCopy( Sender : TObject );
begin
SetClipbrdText( DelEndSpAndDot(Memo1.Text) );
end;

procedure ButtonClose(Sender : TObject);
begin
Form.Close;
end;

procedure ComboBox1Change(Sender : TObject);
begin
for i := 0 to GetArrayLength( Ch )-1 do
if ComboBox1.ItemIndex = i then Memo2.Text := Ft[i];
end;

procedure ButtonInputChara( Sender : TObject );
var
S, S1 : String;
begin
S := Edit.Text;
S1 := ComboBox1.Text;
Insert( S1, S, EdtPos+1 );
Edit.Text := S;
EdtPos := EdtPos + 2;
end;

procedure ButtonOpenAsd( Sender : TObject );
begin
FileOpenA( AppPath + 'Script\Library\FontAA\' + ComboBox2.Text + '.asd' );
end;

procedure ButtonShowList( Sender : TObject );
var
S : String;
begin
S := '【' + ComboBox2.Text + '】';
for I := 0 to GetArrayLength( Ch )-1 do
S := S + #13#10 + '[' + Ch[i] + ']' + #13#10 + Ft[i];
FileOpenB( S );
end;

procedure ComboBox2Change(Sender : TObject);
var
S : String;
begin
SL:= TStringList.Create;
SL.LoadFromFile( AppPath + 'Script\Library\FontAA\' + ComboBox2.Text + '.asd' );
try
SetArrayLength( Ft, SL.Count );
SetArrayLength( Ch, SL.Count );
for i := 0 to SL.Count-1 do
begin
NPos := Pos( #2#2, SL.Strings[i] );
Ch[i] := Copy( SL.Strings[i], NPos+2, 2 );
Ft[i] := ReplaseStr( SL.Strings[i], #1#1, #13#10 );
Delete( Ft[i], NPos, Length( Ft[i] ) );
end;
finally
SL.free;
end;

ComboBox1.Items.Clear;
for i := 0 to GetArrayLength( Ch )-1 do
ComboBox1.Items.Add( Ch[i] );
ComboBox1.ItemIndex := 0;
Memo2.Text := Ft[0];

S := Edit.Text;
Edit.Clear;
Edit.Text := S;
end;

procedure CheckBoxClick( Sender : TObject );
begin
case CheckBox.Checked of
true : Form.FormStyle := fsStayOnTop;
false : Form.FormStyle := fsNormal;
end;
end;

15 ◆2MbZnrMECE:2011/08/06(土) 01:24:57 ID:nNPudv2c
procedure EditKeyDown( Sender: TObject; var Key: Word; Shift: TShiftState );
var
S : String;
EdtPos : Integer;
begin
EdtPos := Edit.SelStart + 1;
if (ssCtrl in Shift) and (ssShift in Shift) then
case Chr(Key) of
'N': begin S := Edit.Text; Insert( '\n', S, EdtPos ); Edit.Text := S; Edit.SelStart := EdtPos + 1; end;
'S': begin S := Edit.Text; Insert( '\ ', S, EdtPos ); Edit.Text := S; Edit.SelStart := EdtPos + 1; end;
'E': Edit.Clear;
end;
end;

procedure KeyPressEsc( Sender : TObject; var Key : Char );
begin
if Key = #27 then Form.Close;
end;


begin

FName := FindFirst( AppPath + 'Script\Library\FontAA\*.asd', $0000003F );

SL:= TStringList.Create;
SL.LoadFromFile( AppPath + 'Script\Library\FontAA\' + FName );
try
SetArrayLength( Ft, SL.Count );
SetArrayLength( Ch, SL.Count );
for i := 0 to SL.Count-1 do
begin
NPos := Pos( #2#2, SL.Strings[i] );
Ch[i] := Copy( SL.Strings[i], NPos+2, 2 );
Ft[i] := ReplaseStr( SL.Strings[i], #1#1, #13#10 );
Delete( Ft[i], NPos, Length( Ft[i] ) );
end;
finally
SL.free;
end;

FtKd := IniReadStr( AppPath + 'EditorOption\Default\OptionEditor.ini', 'Font', 'Name', 'MS P Gothic' );
FtSz := IniReadInt( AppPath + 'EditorOption\Default\OptionEditor.ini', 'Font', 'Size', 12 );

Form := TForm.Create( self );
Form.Width := 400;
Form.Height := 500;
Form.BorderStyle := bsSizeable;
Form.FormStyle := fsNormal;
Form.Caption := '文字AA入力支援スクリプト';
Form.KeyPreview := true;
Form.OnKeyPress := @KeyPressEsc;

Memo1 := TMemo.Create( Form );
Memo1.Parent := Form;
Memo1.Height := 300;
Memo1.Align := alClient;
Memo1.Color := $EFEFEF;
Memo1.Font.Name := FtKd;
Memo1.Font.Size := FtSz;
Memo1.Font.Color := $000000;
Memo1.WordWrap := false;
Memo1.ScrollBars := ssBoth;
Memo1.Text := '';

Panel1 := TPanel.Create( Form );
Panel1.Parent := Form;
Panel1.Align := alBottom;
Panel1.Height := 200;
Panel1.BevelOuter := bvNone;
Panel1.BevelInner := bvLowered;
Panel1.BorderWidth := 0;

Edit := TEdit.Create( Form );
Edit.Parent := Panel1;
Edit.Align := alTop;
Edit.Left := 5;
Edit.Top := 5;
Edit.Width := 280;
Edit.Text := '';
Edit.ShowHint := True;
Edit.Hint := '全角または2バイト単位で入力してください' + #13#10 + '" ", "\ (半角スペース)" でスペース、"\n" で改行が挿入されます';
Edit.OnChange := @EditChangeText;
Edit.OnEnter := @EditChangeText;
Edit.OnExit := @EditExit;
Edit.OnKeyDown := @EditKeyDown;

Button1 := TButton.Create( Form );
Button1.Parent := Panel1;
Button1.Left := 10;
Button1.Top := Edit.Top + 22;
Button1.Width := 45;
Button1.Height := 25;
Button1.Caption := '全角Sp';
Button1.ShowHint := True;
Button1.Hint := '全角スペースを挿入';
Button1.OnClick := @ButtonFullSp;

16 ◆2MbZnrMECE:2011/08/06(土) 01:25:12 ID:nNPudv2c
Button2 := TButton.Create( Form );
Button2.Parent := Panel1;
Button2.Left := Button1.Left + 52;
Button2.Top := Button1.Top;
Button2.Width := Button1.Width;
Button2.Height := Button1.Height;
Button2.Caption := '半角Sp';
Button2.ShowHint := True;
Button2.Hint := '半角スペースを挿入';
Button2.OnClick := @ButtonHalfSp;

Button3 := TButton.Create( Form );
Button3.Parent := Panel1;
Button3.Left := Button2.Left + 52;
Button3.Top := Button1.Top;
Button3.Width := Button1.Width;
Button3.Height := Button1.Height;
Button3.Caption := '改行';
Button3.ShowHint := True;
Button3.Hint := '改行を挿入';
Button3.OnClick := @ButtonCR;

Button4 := TButton.Create( Form );
Button4.Parent := Panel1;
Button4.Left := Button3.Left + 63;
Button4.Top := Button1.Top;
Button4.Width := Button1.Width;
Button4.Height := Button1.Height;
Button4.Caption := 'クリア';
Button4.ShowHint := True;
Button4.Hint := '入力欄のテキストを消去';
Button4.OnClick := @ButtonClear;

Radio := TRadioGroup.Create( Form );
Radio.Parent := Panel1;
Radio.Left := 12;
Radio.Top := Button1.Top + 30;
Radio.Width := 140;
Radio.Height := 40;
Radio.Items.Add('横書き');
Radio.Items.Add('縦書き');
Radio.Columns := 2;
Radio.ItemIndex := 0;
Radio.OnClick := @EditChangeText;

CheckBox := TCheckBox.Create( Form );
CheckBox.Parent := Panel1;
CheckBox.Left := Radio.Left + 155;
CheckBox.Top := Radio.Top + 20;
CheckBox.Caption := '前面';
CheckBox.OnClick := @CheckBoxClick;

Button5 := TButton.Create( Form );
Button5.Parent := Panel1;
Button5.Left := 10;
Button5.Top := Radio.Top + 100;
Button5.Width := 60;
Button5.Height := 30;
Button5.Caption := '挿入';
Button5.ShowHint := True;
Button5.Hint := 'AAを編集画面に貼り付け';
Button5.OnClick := @ButtonInsert;
Button5.Default := True;

Button6 := TButton.Create( Form );
Button6.Parent := Panel1;
Button6.Left := Button5.Left + 70;
Button6.Top := Button5.Top;
Button6.Width := Button5.Width;
Button6.Height := Button5.Height;
Button6.Caption := 'コピー';
Button6.ShowHint := True;
Button6.Hint := 'AAをクリップボードにコピー';
Button6.OnClick := @ButtonCopy;

Button7 := TButton.Create( Form );
Button7.Parent := Panel1;
Button7.Left := Button6.Left + 80;
Button7.Top := Button5.Top;
Button7.Width := Button5.Width;
Button7.Height := Button5.Height;
Button7.Caption := '閉じる';
Button7.OnClick := @ButtonClose;

Panel2 := TPanel.Create( Form );
Panel2.Parent := Panel1;
Panel2.Align := alRight;
Panel2.Width := 160;
Panel2.BevelOuter := bvLowered;
Panel2.BevelWidth := 1;

Panel3 := TPanel.Create( Form );
Panel3.Parent := Panel2;
Panel3.Align := alTop;
Panel3.Height := 25;
Panel3.Font.Name := 'MS UI Gothic';
Panel3.Font.Size := 9;
Panel3.BevelOuter := bvLowered;

17 ◆2MbZnrMECE:2011/08/06(土) 01:25:31 ID:nNPudv2c
ComboBox1 := TComboBox.Create( Form );
ComboBox1.Parent := Panel2;
ComboBox1.Style := csDropDownList;
ComboBox1.Left := 5;
ComboBox1.Top := 4;
ComboBox1.Width := 45;
ComboBox1.DropDownCount := 24;
for i := 0 to GetArrayLength( Ch )-1 do
ComboBox1.Items.Add( Ch[i] );
ComboBox1.ItemIndex := 0;
ComboBox1.OnChange := @ComboBox1Change;

Button8 := TButton.Create( Form );
Button8.Parent := Panel2;
Button8.Left := ComboBox1.Left + 47;
Button8.Top := ComboBox1.Top;
Button8.Width := 32;
Button8.Height := 20;
Button8.Caption := '入力';
Button8.ShowHint := True;
Button8.Hint := 'AAに対応した文字を入力欄に挿入';
Button8.OnClick := @ButtonInputChara;

Button9 := TButton.Create( Form );
Button9.Parent := Panel2;
Button9.Left := Button8.Left + 36;
Button9.Top := Button8.Top;
Button9.Width := Button8.Width;
Button9.Height := Button8.Height;
Button9.Caption := '編集';
Button9.ShowHint := True;
Button9.Hint := '選択中のasdファイルを開く';
Button9.OnClick := @ButtonOpenAsd;

Button10 := TButton.Create( Form );
Button10.Parent := Panel2;
Button10.Left := Button9.Left + 36;
Button10.Top := Button8.Top;
Button10.Width := Button8.Width;
Button10.Height := Button8.Height;
Button10.Caption := '一覧';
Button10.ShowHint := True;
Button10.Hint := '文字AAの一覧を表示';
Button10.OnClick := @ButtonShowList;

Memo2 := TMemo.Create( Form );
Memo2.Parent := Panel2;
Memo2.Align := alClient;
Memo2.Font.Name := FtKd;
Memo2.Font.Size := FtSz;
Memo2.WordWrap := false;
Memo2.ReadOnly := true;
Memo2.ScrollBars := ssNone;
Memo2.Text := Ft[0];

ComboBox2 := TComboBox.Create( Form );
ComboBox2.Parent := Memo2;
ComboBox2.Align := alBottom;
ComboBox2.Style := csDropDownList;
ComboBox2.DropDownCount := 12;
FName := ChangeFileExt( FindFirst( AppPath + 'Script\Library\FontAA\*.asd', $0000003F ), '' );
ComboBox2.Items.Add( Fname );
while FName <> '' do
begin
FName := FindNext;
If FName = '' then break;
Fname := ChangeFileExt( FName, '' )
ComboBox2.Items.Add( FName );
end;
ComboBox2.ItemIndex := 0;
ComboBox2.OnChange := @ComboBox2Change;

Form.Visible := True;
while Form.Visible do Application.HandleMessage;
Form.Free;

end.
-------------------------------------------------------

18小さな名無しさん@この板は300レスまで:2011/08/06(土) 17:05:38 ID:X0OIyzLM
乙ポコペン
ここまで来ると、スクリプトっつーよりも、完全にプログラムだねw

19----------------------:----------------------
----------------------

20小さな名無しさん@この板は300レスまで:2011/08/19(金) 21:00:40 ID:M0ePshEc
連続半角スペースや行頭半角スペースを出さないように修正ドットを打ちながらドットずらしを行うスクリプトって既に存在しますか?

21小さな名無しさん@この板は300レスまで:2011/08/19(金) 22:14:58 ID:C0D6jdzg
>>20
今のところ、見たことないですね

22小さな名無しさん@この板は300レスまで:2011/08/19(金) 22:29:22 ID:M0ePshEc
>>21
よかった。実は既に自分で作ったとこでして

23 ◆SPNXXX34sg:2011/08/19(金) 22:59:15 ID:M0ePshEc
連続半角スペースや行頭半角スペースを出さないように修正ドットを打ちながらドットずらしを行うスクリプトを作りました
例えば通常のAlt+←だと
  _ _ _ _ _| (半角スペースを_に置き換えてます)
を左にずらすと
__ _ _ _ _ _|
になりますがこのスクリプトを使うと
.      _ _|
になります
つまり連続半角スペースやを自力で修正ドットで潰す作業が完全に自動化されます

24 ◆SPNXXX34sg:2011/08/19(金) 23:06:15 ID:M0ePshEc
ショートカットキーをCtrl+Alt+Right等に登録することをお勧めします
■代替Alt+→
-------------------------------------------------------
var
x, y, bd, bx, fd, fx, d, bx2, fx2, by, tx, ty, tz, ct: integer;
S, bt1, bt2, ft1, ft2, bT, fT, T: String;

begin
x:= CaretPosX;
y:= CaretPosY;
S:=Strings(y);
ct:=Length(S);
bx:=x;
fx:=x;
fd:=0;
bd:=0;
by:=0;
repeat
bt1:=Copy(S,bx-1,2);
bt2:=Copy(S,bx,1);

if bx=0 then
begin
by:=1;
end
else
if bt1=' ' then
begin
bx:=bx-2;
bd:=bd+11;
end
else
if bt2=' ' then
begin
bx:=bx-1;
bd:=bd+5;
end
else
if bt2='.' then
begin
bx:=bx-1;
bd:=bd+3;
end
else by:=1;
until by=1;

repeat
ft1:=Copy(S,fx+1,2);
ft2:=Copy(S,fx+1,1);

if ft1=' ' then
begin
fx:=fx+2;
fd:=fd+11;
end
else
if ft2=' ' then
begin
fx:=fx+1;
fd:=fd+5;
end
else
if ft2='.' then
begin
fx:=fx+1;
fd:=fd+3;
end
else

begin
fx2:=fx
fx:=x;
end
until fx=x;


bT:=Copy(S,0,bx);
fT:=Copy(S,fx2+1,ct);


d:=bd+fd+1;
tx:=d div 11
ty:=d mod 11

if (bx=0) and (d=5) then T:='..' else
if (bx=0) and (d=13) then T:='. ' else
if (bx=0) and (d=21) then T:='.......' else
if (bx=0) and (d=37) then T:='.....  ' else
if (bx=0) and (d=53) then T:='...    ' else
if (bx=0) and (d=69) then T:='.      ' else
if (bx=0) and (d=85) then T:='.        ' else
if (bx=0) and (d=101) then T:='.          ' else
if (bx=0) and (d=117) then T:='.            ' else
if (bx=0) and (d=133) then T:='.              ' else
if (bx=0) and (d=149) then T:='.                ' else

if d=-1 then T:='' else
if (ty=0) and (0<tx) then
begin
T :=StringOfChar('a',tx)+'';

25 ◆SPNXXX34sg:2011/08/19(金) 23:06:36 ID:M0ePshEc
T := ReplaseStr(T, 'a' , ' ');
end



else

if d=1 then T:='.' else
if d=12 then T:='....' else
if d=23 then T:='.... ' else
if d=34 then T:='....  ' else
if d=45 then T:='....   ' else
if (ty=1) and (4<tx) and (tx<12) then
begin
T := '.'+StringOfChar('a', tx-5)+'       ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=1) and (11<tx) then
begin
T := StringOfChar('a', tx-12)+'                 ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=2 then T:='.' else
if d=13 then T:=' . ' else
if (ty=2) and (1<tx) and (tx<9) then
begin
T := '.'+StringOfChar('a', tx-2)+'   ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=2) and (8<tx) then
begin
T := StringOfChar('a', tx-9)+'             ';
T := ReplaseStr(T, 'a' , ' ');
end
else


if (ty=3) and (tx<6) then
begin
T := '.'+StringOfChar('a', tx);
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=3) and (5<tx) then
begin
T := StringOfChar('a', tx-6)+'         ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=4 then T:=' ' else
if d=15 then T:='.....' else
if d=26 then T:='..... ' else
if ty=4 then
begin
T :=+StringOfChar('a', tx-3)+'     ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if ty=5 then
begin
T :=+StringOfChar('a', tx)+' ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=6 then T:='..' else
if d=17 then T:='.. ' else
if d=28 then T:='..  ' else
if d=39 then T:='..   ' else
if d=50 then T:='..    ' else
if d=61 then T:='..     ' else
if (ty=6) and (tx<13) then
begin
T := '.'+StringOfChar('a', tx-6)+'         ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=6) and (12<tx) then
begin
T := StringOfChar('a', tx-13)+'                   ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=7 then T:='. ' else
if d=18 then T:='......' else
if d=29 then T:='...... ' else
if (ty=7) and (tx<10) then
begin
T := '.'+StringOfChar('a', tx-3)+'     ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=7) and (9<tx) then

26 ◆SPNXXX34sg:2011/08/19(金) 23:06:47 ID:M0ePshEc
begin
T := StringOfChar('a', tx-10)+'               ';
T := ReplaseStr(T, 'a' , ' ');
end
else


if (ty=8) and (tx<7) then
begin
T := '.'+StringOfChar('a', tx)+' ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=8) and (6<tx) then
begin
T := StringOfChar('a', tx-7)+'           ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=9 then T:='...' else
if d=20 then T:='... ' else
if d=31 then T:='...  ' else
if d=42 then T:='...   ' else
if ty=9 then
begin
T :=+StringOfChar('a', tx-4)+'       ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=10 then T:=' ' else
if ty=10 then
begin
T :=+StringOfChar('a', tx-1)+'   ';
T := ReplaseStr(T, 'a' , ' ');
end
else



T:=bT+fT;
EditorSetLine(y, bt+T+ft);
SetCaret(bx, y);
end.
-------------------------------------------------------

27 ◆SPNXXX34sg:2011/08/19(金) 23:07:00 ID:M0ePshEc
ショートカットキーをCtrl+Alt+Left等に登録することをお勧めします
■代替Alt+左
-------------------------------------------------------
var
x, y, bd, bx, fd, fx, d, bx2, fx2, by, tx, ty, tz, ct: integer;
S, bt1, bt2, ft1, ft2, bT, fT, T: String;

begin
x:= CaretPosX;
y:= CaretPosY;
S:=Strings(y);
ct:=Length(S);
bx:=x;
fx:=x;
fd:=0;
bd:=0;
by:=0;
repeat
bt1:=Copy(S,bx-1,2);
bt2:=Copy(S,bx,1);

if bx=0 then
begin
by:=1;
end
else
if bt1=' ' then
begin
bx:=bx-2;
bd:=bd+11;
end
else
if bt2=' ' then
begin
bx:=bx-1;
bd:=bd+5;
end
else
if bt2='.' then
begin
bx:=bx-1;
bd:=bd+3;
end
else
by:=1
until by=1;

repeat
ft1:=Copy(S,fx+1,2);
ft2:=Copy(S,fx+1,1);

if ft1=' ' then
begin
fx:=fx+2;
fd:=fd+11;
end
else
if ft2=' ' then
begin
fx:=fx+1;
fd:=fd+5;
end
else
if ft2='.' then
begin
fx:=fx+1;
fd:=fd+3;
end
else

begin
fx2:=fx
fx:=x;
end
until fx=x;

bT:=Copy(S,0,bx);
fT:=Copy(S,fx2+1,ct);


d:=bd+fd-1;
tx:=d div 11
ty:=d mod 11

if d=-1 then T:='' else
if (ty=0) and (0<tx) then
begin
T :=StringOfChar('a',tx)+'';
T := ReplaseStr(T, 'a' , ' ');
end



else

if (bx=0) and (d=5) then T:='.' else
if (bx=0) and (d=13) then T:=' ' else
if (bx=0) and (d=21) then T:='.......' else
if (bx=0) and (d=37) then T:='.....  ' else
if (bx=0) and (d=53) then T:='...    ' else

28 ◆SPNXXX34sg:2011/08/19(金) 23:07:12 ID:M0ePshEc
if (bx=0) and (d=69) then T:='.      ' else
if (bx=0) and (d=85) then T:='.        ' else
if (bx=0) and (d=101) then T:='.          ' else
if (bx=0) and (d=117) then T:='.            ' else
if (bx=0) and (d=133) then T:='.              ' else
if (bx=0) and (d=149) then T:='.                ' else

if d=1 then T:='' else
if d=12 then T:='...' else
if d=23 then T:='.... ' else
if d=34 then T:='....  ' else
if d=45 then T:='....   ' else
if (ty=1) and (4<tx) and (tx<12) then
begin
T := '.'+StringOfChar('a', tx-5)+'       ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=1) and (11<tx) then
begin
T := StringOfChar('a', tx-12)+'                 ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=2 then T:='' else
if d=13 then T:=' . ' else
if (ty=2) and (1<tx) and (tx<9) then
begin
T := '.'+StringOfChar('a', tx-2)+'   ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=2) and (8<tx) then
begin
T := StringOfChar('a', tx-9)+'             ';
T := ReplaseStr(T, 'a' , ' ');
end
else


if (ty=3) and (tx<6) then
begin
T := '.'+StringOfChar('a', tx);
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=3) and (5<tx) then
begin
T := StringOfChar('a', tx-6)+'         ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=4 then T:='.' else
if d=15 then T:='.....' else
if d=26 then T:='..... ' else
if ty=4 then
begin
T :=+StringOfChar('a', tx-3)+'     ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if ty=5 then
begin
T :=+StringOfChar('a', tx)+' ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=6 then T:='..' else
if d=17 then T:='.. ' else
if d=28 then T:='..  ' else
if d=39 then T:='..   ' else
if d=50 then T:='..    ' else
if d=61 then T:='..     ' else
if (ty=6) and (tx<13) then
begin
T := '.'+StringOfChar('a', tx-6)+'         ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=6) and (12<tx) then
begin
T := StringOfChar('a', tx-13)+'                   ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=7 then T:='..' else
if d=18 then T:='......' else
if d=29 then T:='...... ' else
if (ty=7) and (tx<10) then
begin
T := '.'+StringOfChar('a', tx-3)+'     ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=7) and (9<tx) then

29 ◆SPNXXX34sg:2011/08/19(金) 23:07:24 ID:M0ePshEc
begin
T := StringOfChar('a', tx-10)+'               ';
T := ReplaseStr(T, 'a' , ' ');
end
else


if (ty=8) and (tx<7) then
begin
T := '.'+StringOfChar('a', tx)+' ';
T := ReplaseStr(T, 'a' , ' ');
end
else
if (ty=8) and (6<tx) then
begin
T := StringOfChar('a', tx-7)+'           ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=9 then T:='...' else
if d=20 then T:='... ' else
if d=31 then T:='...  ' else
if d=42 then T:='...   ' else
if ty=9 then
begin
T :=+StringOfChar('a', tx-4)+'       ';
T := ReplaseStr(T, 'a' , ' ');
end
else

if d=10 then T:='...' else
if ty=10 then
begin
T :=+StringOfChar('a', tx-1)+'   ';
T := ReplaseStr(T, 'a' , ' ');
end
else



T:=bT+fT;
EditorSetLine(y, bt+T+ft);
SetCaret(bx, y);
end.
-------------------------------------------------------

30 ◆SPNXXX34sg:2011/08/19(金) 23:07:40 ID:M0ePshEc
選択範囲をずれない様に「::::」トーンで埋めるスクリプト
-------------------------------------------------------
var
S, T : String;
L1, L2, x, y, z : integer;

begin
L1 := SelStartY;
L2 := SelEndY;
S := SelText;
x :=GetTextWidth(S);
y := x div 3;
z := x mod 3;

if ( x = 1 ) or ( x = 2 ) or ( x = 3 ) or ( x = 4 ) or ( x = 5 ) or ( x = 6 ) or ( x = 7 ) or ( x = 8 ) or ( x = 9 ) or ( x = 10 ) or ( x = 12 ) or ( x = 13 ) or ( x = 14 ) or ( x = 15 ) then
T := S else
if ( x = 11 ) then

T := T + ': :' else
if ( z = 0 ) then
T := StringOfChar(':', y) else
if ( z =1 ) then
begin
y :=y-5
T := StringOfChar(':', y);
T := T+' : :'
end
else
begin
y :=y-1
T := StringOfChar(':', y);
T := T+' '
end


InputBkSp;
InputBoxStr(T);

end.
-------------------------------------------------------

31 ◆SPNXXX34sg:2011/08/19(金) 23:07:52 ID:M0ePshEc
選択範囲をずれない様に「: : : 」トーンで埋めるスクリプト
-------------------------------------------------------
var
S, T : String;
L1, L2, x, y, z : integer;

begin
L1 := SelStartY;
L2 := SelEndY;
S := SelText;
x :=GetTextWidth(S);
y := x div 8;
z := x mod 8;


if ( x < 11 ) then T := S else
if ( 11 < x ) and (x < 16 ) then T := S else
if ( 16 < x ) and (x < 21 ) then T := S else
if ( 22 < x ) and (x < 27 ) then T := S else
if ( 27 < x ) and (x < 32 ) then T := S else
if ( 27 < x ) and (x < 32 ) then T := S else
if ( 34 < x ) and (x < 37 ) then T := S else
if ( 38 < x ) and (x < 43 ) then T := S else
if ( 44 < x ) and (x < 48 ) then T := S else
if ( z = 0 ) then
begin
T := StringOfChar('a', y);
T := ReplaseStr(T, 'a' , ': ');
end
else
if ( z = 1 ) then
begin
y :=y-2
T := StringOfChar('a', y);
T := ReplaseStr(T, 'a' , ': ');
T := T+':. :.'
end
else
if ( z = 2 ) then
begin
y :=y-6
T := StringOfChar('a', y);
T := ReplaseStr(T, 'a' , ': ');
T := T+':. :. :. :. :.'
end
else
if ( z = 3 ) then
begin
T := StringOfChar('a', y);
T := ReplaseStr(T, 'a' , ': ');
T := T+':'
end
else
if ( z = 4 ) then
begin
y :=y-3
T := StringOfChar('a', y);
T := ReplaseStr(T, 'a' , ': ');
T := T+':. :. :.';
end
else
if ( z = 5 ) then
begin
T := ' ';
T := T+StringOfChar('a', y);
T := ReplaseStr(T, 'a' , ': ');
end
else
if ( z = 6 ) then
begin
T := StringOfChar('a', y);
T := ReplaseStr(T, 'a' , ': ');
T := T+':.';
end
else
if ( z = 7 ) then
begin
y :=y-4
T := StringOfChar('a', y);
T := ReplaseStr(T, 'a' , ': ');
T := T+':. :. :. :.';
end



InputBkSp;
InputBoxStr(T);

end.
-------------------------------------------------------

32 ◆SPNXXX34sg:2011/08/19(金) 23:08:08 ID:M0ePshEc
以上です

33小さな名無しさん@この板は300レスまで:2011/08/19(金) 23:57:14 ID:qc0bxdMw
おー完成されましたか、お疲れです。
後ほど自分も導入してみますわ

34小さな名無しさん@この板は300レスまで:2011/08/20(土) 02:39:44 ID:KMC/VBBQ
先ほど本スクリプトを試させていただきました。
物凄い、便利です。
本当にこれは感謝して使わせていただきます。

35小さな名無しさん@この板は300レスまで:2011/08/20(土) 13:20:31 ID:ViFzPW7c
これは素晴らしい。お疲れ様でした。

36小さな名無しさん@この板は300レスまで:2011/08/20(土) 15:48:18 ID:BpV8GFQg
ますます書き溜めがはかどるな。

乙!!

37小さな名無しさん@この板は300レスまで:2011/08/20(土) 16:32:54 ID:7qzk8nhc
すいません
editのスクリプトの勉強してみたいんですが、何か参考になるページとかってあるのでしょうか?
みなさん専門書とかそういうので勉強されてるんですかね?
実際、この手のことに全く知識のない素人なんですが、やっぱプログラムの専門家とかでないと無理でしょうか?

38小さな名無しさん@この板は300レスまで:2011/08/20(土) 16:43:36 ID:pdaMV06w
>>37
(´д`)Tips Script
http://edittips.oh.land.to/tips/e3script/menu.html


動作確認にはこれが便利です

(´д`)ScriptEditor
http://www.kuronowish.com/~edit_/ScriptEditor.html


(´д`)Editのスクリプトは、「Delphi」で書かれているそうなので、
入門ページみたいなものを検索して探してみても良いかも?

39小さな名無しさん@この板は300レスまで:2011/08/20(土) 16:54:07 ID:7qzk8nhc
>>38

ありがとうございます!
早速読んでみます
Delphi、ですね
調べてみます

40 ◆SPNXXX34sg:2011/08/20(土) 17:11:31 ID:IyahKVek
すみません、質問させてください
指定行の一文字目を削るスクリプトを作りたいのですが
一文字目が半角か全角か判定する方法がわからず困っています

どうしたら良いかわかる方どうか教えて下さい
よろしくお願いします
お目汚し失礼しました

41 ◆2MbZnrMECE:2011/08/20(土) 17:57:35 ID:IMBIN7lk
ヒュー!こいつぁすげぇや!
◆SPNXXX34sgさん乙です。

>>40の件は前に作った奴をほじくり返してサンプル作ってみるんで、しばしお待ちを。

42 ◆2MbZnrMECE:2011/08/20(土) 18:32:06 ID:IMBIN7lk

■カーソル行の先頭の文字が半角だったらその文字を削除
------------------
var
S : String;
C : Char;
B : Byte;
begin
S:= Strings( CaretPosY );
C:= StrGet( S, 1 );
B:= Ord( C );
if ( (B >= 0) and (B <= 127) ) or ( (B >= 161) and (B <= 223) ) then
begin
Delete( S, 1, 1 );
EditorSetLine( CaretPosY, S );
end;
end.
------------------

文字コードを取得する ord という関数を利用し、指定位置の文字が
Shift_JISの1バイトコードの範囲内にあれば削除します。

他にいい方法があるかもしれませんが、自分が前に作ったのはこの方法でやりました。

参照:
ttp://charset.7jp.net/sjis.html

43 ◆SPNXXX34sg:2011/08/20(土) 18:37:33 ID:IyahKVek
>>42
ありがとうございます!
これで打開できそうです

44小さな名無しさん@この板は300レスまで:2011/08/20(土) 18:44:37 ID:3B6KGqV6
何時も素晴らしいスクリプトをありがとうございます。
>>24-29のスクリプトも凄く便利です。

私の所だけかもしれませんが、
このスクリプトを導入し推奨のショートカットキーの設定もした後、エディタを終了させて再び起動した後、
再びショートカットキーの設定をしようとした所、エディタの強制終了の確認ダイアログが出てくるようになりましたので
報告にあがりました。

同様にツール > オプション > マウスジェスチャー&右クリックメニューでも上記症状が発生しました。
他のツール > オプションでは発生しておりません。

またスクリプトファイルを消すと上記症状が出ずショートカットなどの設定が行えました。

それから、エディタを起動したまま再びスクリプトファイルをいれて、スクリプト読み込みをした後では
問題なくショートカットの設定ができました。(が、再起動するとまら上記強制終了ダイアログがでます。)

ショートカットの登録が関係するかと考え登録も消してスクリプトファイルを弄ってみましたが変化ありませんでした。

OSはXPHomeEditionのSP3、エディタのバージョンは3.015_4_0となっております。

45 ◆SPNXXX34sg:2011/08/20(土) 18:52:06 ID:IyahKVek
>>44
なんでだろう
スクリプト名は何にしてます?
名前が他と被ってるせいでエラー出してる可能性とか、いや違うかなあ

46小さな名無しさん@この板は300レスまで:2011/08/20(土) 18:57:41 ID:3B6KGqV6
スクリプト名は「1dotずらし右.epp」と「1dotずらし左.epp」です。

先ほど片方ずつで試しましたが、どちらか片方でも強制終了ダイアログでていました。
ファイル名変えて試してみます。

47 ◆SPNXXX34sg:2011/08/20(土) 19:02:51 ID:IyahKVek
うーむ、僕自身スクリプト導入して間もないので難しいなあ
実行する前にエラーが出てるってことでいいんですよね?
だとするとスクリプトの内容は関係なさそうだけども

単にスクリプトを実行するだけなら問題なく行えてるのでしょうか?

48 ◆2MbZnrMECE:2011/08/20(土) 19:04:10 ID:IMBIN7lk
>>37
自分も最初は完全な素人だったし、何とかなんるじゃないでしょうか!

でもDelphiってWeb上の情報がいまいち少ない気がするんですよね。
自分はネットと既存のスクリプトだけを頼りに勉強したわけですが、スゲー効率悪そうなので、
ちゃんと身に付けるなら体系的に纏まった情報が載っている書籍の方がいいかもしれません。

あと、(´д`)Editのスクリプト機能はWindowsのAPIが利用できなかったり、
使えない関数やプロパティがあったりと、色々制限があるみたいです。
以下も参照してみてください。

ScriptHelp
ttp://www.kuronowish.com/~edit_/edit_script.html

49小さな名無しさん@この板は300レスまで:2011/08/20(土) 19:08:38 ID:3B6KGqV6
>>45
ファイルを別フォルダに移動。
ファイル名を変える。
エディタ起動中にスクリプトのフォルダへ。(ここでは問題なくショートカットなどの設定が可能)
エディタ再起動後、強制終了のがでました。
「例外が発生しました。Access violation at address0040BDC in module'(´Д`)Edit.exe'〜 強制終了しますか?」
となります。いいえを選ぶと空白の設定ウィンドが開きます。

1dotずらすスクリプト自体は正常に作動してますので、設定が必要になった場合にはファイルを消すなどで対応します。

他にもスクリプト入れていますので、そちらの方もちょっと試して来ます。

50小さな名無しさん@この板は300レスまで:2011/08/20(土) 19:25:45 ID:3B6KGqV6
>>45
>>23のスクリプト以外を移動させた所、正常に動きました。
他に入れているスクリプトと干渉していた模様です。

…で、試していった所、ttp://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1307817465/288
でUPしていただいた、"FontAAフォルダ"が引っかかっていた模様です。 訳が分かりませんw

51 ◆2MbZnrMECE:2011/08/20(土) 19:26:24 ID:IMBIN7lk
>>49
前スレでも同じような報告があったんですが、どうもLibraryの中に作ったフォルダが悪さをしてるような気がします。
ttp://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1307817465/281

もし50音スクリプト用の「FontAA」フォルダがあったら、一旦別の場所に移動してみてください。

52 ◆2MbZnrMECE:2011/08/20(土) 19:29:03 ID:IMBIN7lk
あぁ……やっぱり。
対処入れた版を後で作っときます。

53小さな名無しさん@この板は300レスまで:2011/08/20(土) 19:33:31 ID:3B6KGqV6
Scriptフォルダ以下にあるのが問題の発生条件の模様です。
こちらでもFontAAのパスを変更することで対応しましたが、お手数お掛けして申し訳ありません。
対応ありがとうございました。

54小さな名無しさん@この板は300レスまで:2011/08/20(土) 20:00:52 ID:VqVA37qM
作成ありがとうございます。

これからもがんばってください。

55 ◆2MbZnrMECE:2011/08/21(日) 22:38:41 ID:vO7NpAd.
五十音スクリプト修正版
ttp://loda.jp/yaruogazou/?id=1748.zip

>>49のエラーが出る方は、こちらに差し替えてください。
「FontAA」フォルダは(´д`)Edit直下( "(´д`)Edit.exe" のあるフォルダ)に置いてください。

自分で修正する場合は、ソースコードの
Script\Library\FontAA\

FontAA\
に書き換えます(全部で5箇所あります)。

56 ◆2MbZnrMECE:2011/08/21(日) 23:05:03 ID:vO7NpAd.
素材スレで上がってた文字AA他をasdに纏めたんで、ついでに上げときます。
ttp://loda.jp/yaruogazou/?id=1749.zip

内容は、以下の文字セットです。


【ボトムズのアストラギウス文字】
------------------------------------------------------
 ┌――┐      ┌┐   ┌―‐ 、  ┌┐ ┌┐    ,.┐┌、
 └‐┐ ./ .      ||   |/ ̄| }  ||    .||  / 」 L ヽ
   ./ /  .   ., ―┘|  ┌ ┘ノ  ||    .||   { [__ ] }
   ||    / / ||  |[ 」\ .  ヽ  ̄ ̄ / .  ヽ    /
   └┘    '―'  └┘  └―‐一   ー一      `ー一´
------------------------------------------------------

【かなカナ混成】
------------------------------------------------------
  ┌┐                    ┌──┐  ┌────┐      ┌┐    ┌┐
┌┘└──┐┌┐    ┌┐┌┴──┴┐└───┐│    ┌┘│┌─┘└─┐
└┐┌┬┬┘││    ││└───┐│    ┌┐┘│  ┌┘┌┘│┌──┐│
┌┘└┘└┐││    ││        ││    │┌─┘┌┼┐│  └┘    ││
│[] 囗 ┌││└┐  ││  ┌──┘│  ┌┘│    └┘││    ┌──┘│
└───┴┘└─┘  └┘  └───┘  └─┘        └┘    └───┘
------------------------------------------------------

【上記カタカナの太枠版】
------------------------------------------------------

┏━━━━┓      ┏┓    ┏┓                      ┏┓
┗━━━┓┃    ┏┛┃┏━┛┗━┓┏━━━━┓┏━━┛┗┓
    ┏┓┛┃  ┏┛┏┛┃┏━━┓┃┗━┓┏━┛┗━┓  ┏┛
    ┃┏━┛┏╋┓┃  ┗┛    ┃┃    ┃┃        ┃┃┃
  ┏┛┃    ┗┛┃┃    ┏━━┛┃┏━┛┗━┓┏━┛┃┃
  ┗━┛        ┗┛    ┗━━━┛┗━━━━┛┗━━┻┛
------------------------------------------------------

【デジタル数字風(4行)】
---------------------------
  _ _    . _. _
   |  | ・ |_ | |
 | ̄  ̄| ・   |  ̄|
   ̄  ̄    .  ̄.  ̄
---------------------------

【デジタル数字風(3行)】
---------------------------
   ̄|  ̄|  ・ | ̄  | ̄|
 | ̄   ̄|  ・   ̄|   ̄|
   ̄   ̄ .   .  ̄    ̄
---------------------------

【太字デジタル数字風(4行)】
---------------------------
  _ . _     . _  __
  _|| _|| o ||_ ||_||
 ||_ _|| o  _|| . _||
   ̄ .  ̄     .  ̄   ̄
---------------------------

57 ◆SPNXXX34sg:2011/08/23(火) 00:10:12 ID:V/vH6ayw
いくつかスクリプト作ってきました
1,新ドットずらし左
2,新ドットずらし右
3,全体ドットずらし左
4,全体ドットずらし右


1,2は上の方で公開したスクリプトの改善版です
空白幅が11で割って5余る値だったとき半角スペースを空白の頭に置いていたのを空白末尾に置くように修正しています
また、スクリプトをテキストとして開き、下から3行目の
SetCaret(Length(BT), Y);
と書かれた部分を
SetCaret(Length(BT+T), Y);
に書き換えると元々のドットずらし機能と同様キャレットが空白末尾に移動するようになります
(旧バージョンに同じ書き換えをしてもこうなります)
また記述内容をだいぶ読みやすくしたので改造しやすくなったと思います

3,4はAA全体を右もしくは左に1ドットずつずらすスクリプトです
AAの左端が左から14ドットのところまで来るとそれ以上左にずらせなくなります


こちらのページの添付ファイルをダウンロードしてScriptフォルダに置いてください
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo

エラーなど発生したらご連絡ください

58小さな名無しさん@この板は300レスまで:2011/08/23(火) 00:55:27 ID:Y7jsul/E
>>57
スクリプトですが、修正用ドットを空白の頭ではなく末尾に置くことはできないでしょうか?
簡単にできるものかもしれませんが、ちょっとよくわからなくて……

59小さな名無しさん@この板は300レスまで:2011/08/23(火) 00:57:19 ID:Y7jsul/E
あ、今のも凄く便利です!
ありがとうございます

60 ◆SPNXXX34sg:2011/08/23(火) 00:57:30 ID:V/vH6ayw
>>58
簡単な書き換えでは無理ですね
結構な数の条件分けがあるので

ちょっと検討してみます

61 ◆2MbZnrMECE:2011/08/23(火) 01:04:35 ID:fqpA6u36
早速導入してみましたが、こりゃまた実用性高くていいですね。
お疲れ様です!

62小さな名無しさん@この板は300レスまで:2011/08/23(火) 01:05:53 ID:vtFg4qQ2
キャレット位置変更は従来機能の癖が染み付いているので本当に助かります。
ありがとうございます。

63 ◆SPNXXX34sg:2011/08/23(火) 01:43:09 ID:V/vH6ayw
>>58
出来ました
新ドットずらし左ドット右打ち.eppがピリオドを右に打ちながら左にドットずらしするスクリプト
新ドットずらし右ドット右打ち.eppがピリオドを右に打ちながら右にドットずらしするスクリプト
ドット右打ち.eppがずらさずにピリオドを右に移動させるスクリプト
です
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo

64小さな名無しさん@この板は300レスまで:2011/08/23(火) 01:47:51 ID:Y7jsul/E
>>63
おお! ありがとうございます!

65 ◆SPNXXX34sg:2011/08/24(水) 01:29:39 ID:QrfwVyhc
>>57
すみません
新ドットずらし←→スクリプトにドットを打つ必要がないときにドットを打ってしまうバグがあったので修正しました
使用されてる方は更新お願いします

ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo

66小さな名無しさん@この板は300レスまで:2011/08/24(水) 18:17:03 ID:3ATRHG62
お疲れさんです

質問ですが、
「すでに起動しているAA人の下絵に(´д`)EditのAAを貼り付ける」
と言うスクリプトはありましたっけ?

67 ◆2MbZnrMECE:2011/08/24(水) 21:04:30 ID:OYpw.sWw
渡世AA人を起動してから(´д`)Editの選択範囲を下絵欄に送るっていうのなら、自分が前に作りました。
あとAoutHotKeyのキー拡張機能で、上のを含めて色々機能を付け足したものとか。
どっちも前スレに置いてあります。

68小さな名無しさん@この板は300レスまで:2011/08/24(水) 21:55:54 ID:3ATRHG62
>>67
その、「起動してから」のプロセスをカットしたものですね。要するに

AoutHotKeyは入れてないなぁそういえば……
駐在ソフトかぁ

69 ◆SPNXXX34sg:2011/08/25(木) 22:55:40 ID:EReATfc.
スクリプト2つ作ってきました
1.空白置換スクリプト
 選択範囲を同じ幅の空白に置き換えるスクリプト
 幅調整のため空白の左端にピリオドを打ちます
 選択範囲は一行のみにしか対応していません

2、強制左ずらしスクリプト
 AA全体を1ドット左に寄せるスクリプト
 AAが左端まで来ると適宜AAを削っていきます
 行頭に「固」と書いてる行はずらさないようになってます
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo

70 ◆SPNXXX34sg:2011/08/25(木) 22:56:36 ID:EReATfc.
固定_二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二| |二¨゚二 .....|
                                       `ヽ_)}            | |. //     .|
                                  _{>゙⌒'yヘ:Уゝ、         | |//      |
           {',                   ー=≦:::;::ィァナア::/}:::::::::::ヽ        | |/    ......|
               V\         {(           // /{/メ'´  .j:::/7〈:::::.       | |     .....|
.             ∨::\   、    \::....          {:i.竹T , 竹T/ }::::}      /| |     .....|
               ∨::::::`゙'<.,\::<  `゙'<≧=--‐=≦:rl_____    /' └i'       .//| |     .....|
              ∨\::::::::::::::::`¨:::::::`'===-‐:::::::::: `ー‐=大 ⌒`    _,.ン       // .| |     .....|
                 \:::`'ー=ニ::::::_:::::::::::::::::::::::::::::::::::::x-‐…‐゙个o。.,_,..oチ::::/      .//  | |     .....|
          ト、     `゙'<:::::::::::::::::::::::::::::::::::::::::::::::└-‐'ヽ  ヽ、ヾ   :ト、ヾ^'x.   //   .| |     .....|
           ∨\       `¨¨''冖=‐--‐ァ:::::::::::::::::::::/ ヽ`ヽ   \__ノ / /ヽ、//    | |     .....|
         \:::::`゙'<          _,x≦ :::::::::::;:>'゙´ -‐-x-‐x-‐‐-、/ / /,x‐-<゙ヽ  | |     .....|
―――――――――――――――――――┴―――┴⊂ニ)ノ)ハノニ⊃(////┴┴‐..| |───  |
:::::━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┥ |━━━  |
:::二二二二二二二二二二二二二二二二二二二二二二工二二二二二二ヱ二二二二::::| |二二二  |
: ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄} ̄ ̄ノ ̄八 ̄/ ̄ ̄ ̄ ̄ ̄~゙| | ̄ ̄ ̄  |
                                                            |
強制左ずらしスクリプト実例
上のAAに対しこのスクリプトを複数回かけると下のようになります
固定_二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二| |二¨゚二 .....|
.           `ヽ_)}            | |. //     .|
.      _{>゙⌒'yヘ:Уゝ、         | |//      |
.... ー=≦:::;::ィァナア::/}:::::::::::ヽ        | |/    ......|
     // /{/メ'´  .j:::/7〈:::::.       | |     .....|
       {:i.竹T , 竹T/ }::::}      /| |     .....|
. =--‐=≦:rl_____    /' └i'       .//| |     .....|
..:::::::::: `ー‐=大 ⌒`    _,.ン       // .| |     .....|
゙:::::::::::x-‐…‐゙个o。.,_,..oチ::::/      .//  | |     .....|
゙::::::::└-‐'ヽ  ヽ、ヾ   :ト、ヾ^'x.   //   .| |     .....|
゙::::::::::::::::/ ヽ`ヽ   \__ノ / /ヽ、//    | |     .....|
_::::;:>'゙´ -‐-x-‐x-‐‐-、/ / /,x‐-<゙ヽ  | |     .....|
_┴―――┴⊂ニ)ノ)ハノニ⊃(////┴┴‐..| |───  |
゙━━━━━━━━━━━━━━━━┥ |━━━  |
. 二二二工二二二二二二ヱ二二二二::::| |二二二  |
.  ̄ ̄ ̄ ̄} ̄ ̄ノ ̄八 ̄/ ̄ ̄ ̄ ̄ ̄~゙| | ̄ ̄ ̄  |
                                   |

71小さな名無しさん@この板は300レスまで:2011/08/25(木) 22:57:29 ID:hN8GSY5E
うおお、またかゆいところに手が届くというか直撃というか
お疲れ様です。お世話になります

72 ◆2MbZnrMECE:2011/08/27(土) 00:19:54 ID:mnPnI9do
◆SPNXXX34sgさん毎度乙です。渡世AA人が要らなくなる日も遠くなさそうだこりゃ。


一方自分は更新するネタも無いんで、たまにはスクリプトと全然関係ない情報でお茶を濁してみます。


                 *          *          *


Dropbox
ttps://www.dropbox.com/

ファイルのバックアップに自分はこんなの使ってます。

ローカルで指定したフォルダの内容が変更されると、自動でネットワーク上のドライブと
同期を取るので、普段全く意識することなく使えて便利です。オススメ。


自分はやる夫関連のファイルの他に、(´д`)Editのバックアップフォルダを
Dropboxフォルダ内に設定してます。削除したファイルも後から復元可能なので、
こうしておけば三重にバックアップを取っていることになります。

DropBoxに限らずこの手のストレージサービスは他にも色々あると思うので、
もしもの時に泣きを見ないためにも導入してみたらいかがでしょ。


最近やたらと色んなところでバックアップ取ってなくて書き溜め消えたとかいう話を
耳にするような気がしたので、紹介してみました。

73 ◆2MbZnrMECE:2011/08/27(土) 00:20:09 ID:mnPnI9do

ついでに、(´д`)Edit のあまり知られてないかもしれない、ちょっとした小技なんぞを。
こんなのどーすんだ、ってのから意外とお役立ちなものまで雑多にいろいろと。


【設定関連】

・ 「RightSet.asd」で右揃えや枠を調整する文字を変更可能。

・ 「CheckSetting.ini」に書き加えることで、チェック機能(Ctrl+K)の各掲示板に対応した設定を変更・追加可能。
 自分はしたらばとyyとここ(小さなやる夫板)の設定を追加して使い分けてます。

・ 編集画面の改行とTAB文字の表示を変えるには、「\EditorOption\Default\OptionEditor.ini」の
 [DrawCode]セクションを編集(Unicodeで記述)。

・ HintのポップアップのフォントはOSの設定に依存(画面のプロパティで変更)。

・ バックアップのフォルダは ツール - オプション - フォルダ で変更可能。

・ 1行のバイト数が256以上のとき、行番号の左に * が表示される。
 (ただし「"」「<」「>」等も2バイト扱いなので、実際の容量と食い違うことがある)



【操作関連】

・ Shiftを押しながらDrag&DropでTemplateのタブの順番を入れ替え可。

・ Templateの項目上でマウスのホイールボタンを押すと、直でTextBoxに表示される。

・ テキストボックスの矩形貼り付けボタンを右ボタンクリックでボックスを閉じないで入力。

・ テキストボックスをダブルクリックでテキストボックス内の文字を編集可能。

・ Ctrl+Alt+左Click で即座に矩形選択モードになる。

・ Ctrl+Shift+Insでキャレットの左を、Ctrl+Shift+Delで右を一括削除。

・ 行選択状態で文字入力すると、選択行の行頭にその文字が挿入される。

・ 矩形選択状態で文字入力すると、範囲内がその文字で埋め尽くされる。

・ TABの入力は日本語入力OFFにしてShift+Ctrl+Space。

・ トレース画面の特殊操作
  マウス左ドラッグ          :画像を移動。
  マウス右ドラッグ           :Textを移動。
  左ダブルクリック→ドラッグ  :Zoomを可変。(左上:小 右下:大)
  Shift + マウス左ドラッグ    :Brightを可変。(左上:小 右下:大)
  Ctrl + マウス左ドラッグ    :Angleを可変。(左上:小 右下:大)

・ 特定のツールボタンを右クリックすると、ボタンに応じたメニューが表示される。
 (例:「新規作成」で作成するファイルの種類、「開く」でファイル履歴 等)
 Option - ツールボタン の「右クリックメニュー」で設定可……らしいけど機能してないっぽい?

・ ステータスバー右端の日付/時刻表示をダブルクリックで編集画面に貼り付け。

74 ◆2MbZnrMECE:2011/08/27(土) 00:20:24 ID:mnPnI9do
以上です。
トレース画面のテキストをマウスで移動できるのなんかは
意外と知られてないんじゃないでしょうか?




……こういう情報を持ち寄るようなスレを想定してたのが昔の俺なんだよな。
今は延々とスクリプトを貼り付けるだけのスレになってるから困る。


というわけで、たまにはちゃんとスレタイに沿った内容でお送りしました。
皆様もこんな感じの便利ネタをお持ちなら、ぜひお寄せください。

75小さな名無しさん@この板は300レスまで:2011/08/27(土) 05:52:56 ID:vIxr51Q6
右ドラッグは知らなかったな
左ドラッグは間違って移動して、移動前の情報メモってなくて死ぬことがしばしば

76 ◆SPNXXX34sg:2011/08/27(土) 19:46:26 ID:2070c3mo
(´д`)Edit上で渡世人的なことするスクリプト作りました

・導入
こちらから合成パネル.zipをダウンロードして下さい
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
zipを解凍して出てきた合成フォルダと合成パネル.eppをScriptフォルダ内に置いてください

・使い方
(´д`)Editで合成パネル.eppを実行してください
このようなパネルが起動します
ttp://a-draw.com/src/a-draw_5293.png

下絵転送ボタンを押すと編集画面のAAが下絵として転送されます
上絵転送ボタンを押すと編集画面のAAが上絵として転送されます
合成ボタンを押すと編集画面に合成結果が出力されます
(合成AST新規作成は未実装の機能なので今押しても何も起こりません)

下絵移動、上絵移動ボタンはAAを移動させるボタンです
↑を押すと一行上に、↓を押すと一行下に移動します
←を押すと1dot左に、←←を押すと16dot左に移動します
→を押すと1dot右に、→を押すと16dot右に移動します
0を押すと位置がリセットされます

・渡世人との違い
AAが全くズレない
下絵も動かせる
(もしズレたならそれはバグなので報告お願いします)

以上です
使用報告、バグ報告いただけるとありがたいです

77小さな名無しさん@この板は300レスまで:2011/08/27(土) 19:59:42 ID:XHYSgdSY
>>76
今しがた使ってみて
「コイツァすげえ……」と本当に思いました

これ本当に凄いです、お疲れ様でした。

78小さな名無しさん@この板は300レスまで:2011/08/27(土) 20:03:16 ID:XHYSgdSY
質問なのですが、これはEdit上で
NewFile 1(下絵はりつけ用タブ)
NewFile 2(下絵+上絵の合成用タブ)
と、二つパネルを使用する、という使い方でよろしいでしょうか?

79小さな名無しさん@この板は300レスまで:2011/08/27(土) 20:22:32 ID:fyhZJncY
合成フォルダはScriptフォルダに。
合成パネル.eppはScriptフォルダ内のLibraryフォルダに、というやり方ですよね?

いや、両方ともScriptフォルダに置くように読みとれてしまったもので。

80 ◆SPNXXX34sg:2011/08/27(土) 20:25:49 ID:2070c3mo
>>78
下絵タブ
上絵タブ
合成タブ
の3つが望ましいと思います

>>79
.eppはScriptフォルダ内のどこでもいいです
僕は直置きしてますが

81小さな名無しさん@この板は300レスまで:2011/08/27(土) 20:38:14 ID:fyhZJncY
>eppはScriptフォルダ内のどこでもいいです

.eppをScriptフォルダに置き
ツール → オプション → 右クリックメニュー とやるとエラーになってしまいます。
Libraryフォルダに.eppを置くとエラーにならないので、そういう置き方かと思ったんですが。

あれ? 自分だけでしょうか?

82 ◆SPNXXX34sg:2011/08/27(土) 20:42:59 ID:2070c3mo
>>81
僕の環境だとどこでも大丈夫ですねえ

他の方の報告も頂きたいところです

83小さな名無しさん@この板は300レスまで:2011/08/27(土) 20:43:51 ID:Q1aZQiio
自分も同じエラーが出ました

84 ◆SPNXXX34sg:2011/08/27(土) 20:45:43 ID:2070c3mo
>>81
エラー内容はどうなってますか

85小さな名無しさん@この板は300レスまで:2011/08/27(土) 20:46:16 ID:XHYSgdSY
Win7 64bit版、XP Pro SP3
の環境で試してみましたが、双方、問題ありません。

「合成フォルダ」内のファイル全てをLibraryに入れて使ったら
エラーが出ましたけど、これはただの手違いなので報告にはなりませんが。

86 ◆SPNXXX34sg:2011/08/27(土) 20:49:44 ID:2070c3mo
>>85
そうですね、合成フォルダの方は場所が変わるとまずいのは確かです
合成パネル.eppの方はどこでもいいはずなんだがなあ

87小さな名無しさん@この板は300レスまで:2011/08/27(土) 20:50:49 ID:fyhZJncY
>>84
こんな内容でした。


例外が発生しました。
Acces violation at address 00404BDC in module'(´д`)Edit.exe'.Read of address
6972634B
強制終了しますか?

88 ◆SPNXXX34sg:2011/08/27(土) 20:53:36 ID:2070c3mo
>>87
ふむ全然分かりませんw
他にフォルダ内直置きのスクリプト使ってないんでしょうか
これだけが動かないですか?

89小さな名無しさん@この板は300レスまで:2011/08/27(土) 20:58:57 ID:fyhZJncY
直置きはやっていません。
全てLibraryフォルダに入れてます。


あ、直置きしても動くには動くんですよ。
ただ、>>81みたいに次のスクリプトを追加しようとするとエラーになるってだけで。

90 ◆SPNXXX34sg:2011/08/27(土) 21:04:44 ID:2070c3mo
基本的にLibraryフォルダに置くよう推奨したほうが良さそうですね

91 ◆2MbZnrMECE:2011/08/27(土) 21:14:34 ID:mnPnI9do
それ上の方や前スレでも話題が出ましたが、Scriptフォルダの下に
最初から入ってる以外のファルダを作ると、スクリプトの追加や
「スクリプト再読込」を実行した後ショートカット/マウスジェスチャ/右ClickMneu の
設定を開こうとしたとき、エラーが発生することがあるみたいです。

なので、フォルダを置く場所はScipt以下は止めといた方がよさそうです。

92 ◆SPNXXX34sg:2011/08/27(土) 21:18:44 ID:2070c3mo
>>91
そうだったのか・・・
Editのフォルダあたりに変えたほうが良さそうですね

93小さな名無しさん@この板は300レスまで:2011/08/27(土) 21:58:48 ID:BAm7elxY
>>76
おお、これはいいね
まだまだ改良されるみたいだし期待大

94小さな名無しさん@この板は300レスまで:2011/08/27(土) 22:04:57 ID:BAm7elxY
新しいツールの紹介来てたので転載しときます

やる夫AAリスト(仮)
ttp://jbbs.livedoor.jp/bbs/read.cgi/otaku/12973/1314075832/115-128

95 ◆2MbZnrMECE:2011/08/28(日) 00:38:17 ID:bP7Z0yhE
>>94
紹介ありがとうございます。
サムネイルで見れるってさりげないけどスゲー革命的ですよね。
どんどん便利になっていくなあ。

96小さな名無しさん@この板は300レスまで:2011/08/28(日) 11:06:54 ID:rez9/SQQ
多分ここではまだ紹介されてないよね?

『やる夫が小説家になるようです』で紹介されてたカードを出力するプログラム
ttp://jbbs.livedoor.jp/bbs/read.cgi/otaku/12973/1310128230/531,540

97 ◆2MbZnrMECE:2011/08/28(日) 20:30:25 ID:bP7Z0yhE
>>96さん紹介ありがとうございます。

最近やる夫スレ周りのツールの充実っぷりが凄いですね。
2年くらい前から終わったとか何とか言ってる人がいますが、こういうのが
生まれやすくなる位には参加する人が増えてきてるってことなんでしょう。
いいことだと思います。

98 ◆2MbZnrMECE:2011/08/28(日) 20:30:39 ID:bP7Z0yhE

ネタが無いとか言いつつこんなん作ってました。



■縦書きテキストメーカー
-------------------------------------------------------
function GetSpace1( W : Integer ) : String;
var
W0, I, IC : Integer;
S : String;
begin
if W < 2 then S:= ''
else if W < 5 then S:= '.'
else if W < 7 then S:= ' '
else if W < 10 then S:= '. '
else if W < 13 then S:= ' '
else if W = 13 then S:= ' . '
else if W = 15 then S:= '. '
else if W = 18 then S:= '.  '
else for I:= 0 to W/16 do
begin
W0:= W - 16 * I;
if W0 mod 11 = 0 then begin for IC:= 1 to W0/11 do S:= S + ' '; for IC:= 1 to I do S:= S + '  '; Break; end
else if W0 = 0 then begin for IC:= 1 to W/16 do S:= S + '  '; Break; end
else if W0 = 5 then begin for IC:= 1 to I do S:= S + '  '; S:= ' ' + S; Break; end
else if W0 = 8 then begin for IC:= 1 to I do S:= S + '  '; S:= S + '. '; Break; end
else if W0 = 13 then begin for IC:= 1 to I do S:= S + '  '; S:= ' ' + S + '. '; Break; end;
end;
Result:= S;
end;

function GetSpace2( W, RdItm : Integer ) : String;
var
W0, I, I0, I1 : Integer;
S : String;
begin
while S = '' do
begin
if W = 0 then begin Result:= ''; Exit; end
else if W = 1 then begin if RdItm = 1 then S:= ' ' else if RdItm = 2 then S:= ' '; end
else if W = 2 then begin if RdItm = 1 then S:= ' ' else if RdItm = 2 then S:= ' '; end
else if W = 3 then begin if RdItm = 1 then S:= ' ' else if RdItm = 2 then S:= ' '; end
else if W = 4 then begin if RdItm = 1 then S:= ' ' else if RdItm = 2 then S:= ' '; end
else if W = 10 then begin if RdItm = 1 then S:= '  ' else if RdItm = 2 then S:= '  '; end
else for i:= 0 to W/16 do
begin
W0:= W - 16 * i;
if W0 mod 11 = 0 then begin for i0:= 1 to W0/11 do S:= S + ' '; for i0:= 1 to I do S:= S + '  '; Break; end
else if W0 = 0 then begin for i0:= 1 to W/16 do S:= S + '  '; Break; end
else if W0 = 5 then begin for i0:= 1 to I do S:= S + '  '; S:= ' ' + S; Break; end
end;
if S = '' then begin i1:= i1 + 1; W:= W - 1; Continue; end;
end;

if i1 = 1 then begin if RdItm = 1 then S:= S + ' ' else if RdItm = 2 then S:= S + ' '; end
else if i1 = 2 then begin if RdItm = 1 then S:= S + ' ' else if RdItm = 2 then S:= S + ' '; end
else if i1 = 3 then begin if RdItm = 1 then S:= S + ' ' else if RdItm = 2 then S:= S + ' '; end
else if i1 = 4 then begin if RdItm = 1 then S:= S + ' ' else if RdItm = 2 then S:= S + ' '; end;
Result:= S;
end;

function SeparateCSVText( S : String ) : array of String;
var
S0 : String;
I, IPos : Integer;
begin
S0:= S;
if Pos( ',', S0 ) = 0 then SetArrayLength( Result, 1 )
else begin
repeat
Delete( S0, 1, Pos( ',', S0 ) );
i:= i + 1;
until Pos( ',', S0 ) = 0
SetArrayLength( Result, i + 1 )
end;

for i:= 0 to GetArrayLength( Result ) - 1 do
begin
IPos:= Pos( ',', S );
if IPos = 0 then Result[i]:= S
else Result[i]:= Copy( S, 1, IPos-1 );
Delete( S, 1, IPos );
end;
end;

99 ◆2MbZnrMECE:2011/08/28(日) 20:30:54 ID:bP7Z0yhE

function MakeVerticalText( S, S0, Sp : String; RdItm : Integer; ChkBx3: Boolean ) : String;
var
SL, SL0 : TStringList;
S1, Dt : String;
I, IC, LnMxWth, LnMxWth0, LnMxWth1, W, WSp : Integer;
LnWth : array of Integer;
B0, B1 : Byte;
begin

WSp:= GetTextWidth( Sp );

if RdItm = 0 then
begin
SL:= TStringList.Create;
SL0:= TStringList.Create;
try
SL.SetText( S );
SL0.SetText( S0 );
if SL.Count < SL0.Count then while SL.Count < SL0.Count do SL.Text:= SL.Text + #13#10;
for i:= 0 to SL.Count - 1 do
if GetTextWidth( SL.Strings[i] ) > LnMxWth then LnMxWth:= GetTextWidth( SL.Strings[i] );
for i:= 0 to SL0.Count - 1 do
begin
if GetTextWidth( SL0.Strings[i] ) > LnMxWth0 then LnMxWth0:= GetTextWidth( SL0.Strings[i] );
if ( GetTextWidth(SL0.Strings[i]) > LnMxWth1 ) and ( GetTextWidth(SL0.Strings[i]) < 17 ) then LnMxWth1:= GetTextWidth( SL0.Strings[i] );
end;

for i:= 0 to SL0.Count-1 do
begin
if SL0.Strings[i] = '' then Continue;
W:= ( LnMxWth - GetTextWidth(SL.Strings[i]) ) + WSp + ( LnMxWth0 - GetTextWidth(SL0.Strings[i]) ) / 2;

S1:= SL0.Strings[i];
B0:= Ord( StrGet(S1, 1) );
if Length( SL0.Strings[i] ) > 1 then B1:= Ord( StrGet(S1, 2) );
if ( ChkBx3 = true ) and ( B0>=167 ) and ( B0<=175 ) then W:= ( LnMxWth - GetTextWidth(SL.Strings[i]) ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i])
else if ( ChkBx3 = true ) and ( B0=130 ) and ( (B1=159) or (B1=161) or (B1=163) or (B1=165) or (B1=167) or (B1=193) or (B1=225) or (B1=227) or (B1=229) or (B1=236) ) then
W:= ( LnMxWth - GetTextWidth(SL.Strings[i]) ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i])
else if ( ChkBx3 = true ) and ( B0=131 ) and ( (B1=64) or (B1=66) or (B1=68) or (B1=70) or (B1=72) or (B1=98) or (B1=131) or (B1=133) or (B1=135) or (B1=142) or (B1=149) or (B1=150) ) then
W:= ( LnMxWth - GetTextWidth(SL.Strings[i]) ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i]);

if ( W > 13 ) and ( GetSpace1( W ) = '' ) then
begin
if GetSpace1( W-3 ) <> '' then begin W:= W - 3; Dt:= '.'; end
else if GetSpace1( W+1 ) <> '' then W:= W + 1
else if GetSpace1( W-1 ) <> '' then W:= W - 1;
end;
SL.Strings[i]:= SL.Strings[i] + GetSpace1( W ) + Dt + SL0.Strings[i];
Dt:= '';
end;
Result:= TrimRight( SL.Text );
finally
SL.free;
SL0.free;
end;
end

else if RdItm > 0 then
begin
SL:= TStringList.Create;
SL0:= TStringList.Create;
try
SL.SetText( S );
SL0.SetText( S0 );
if SL.Count < SL0.Count then while SL.Count < SL0.Count do SL.Text:= SL.Text + #13#10;
SetArrayLength( LnWth, SL.Count );

100 ◆2MbZnrMECE:2011/08/28(日) 20:31:09 ID:bP7Z0yhE

for i:= 0 to SL.Count - 1 do
begin
S1:= SL.Strings[i];
repeat
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 7 ); iC:= iC + 1; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 7 ); iC:= iC + 2; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 7 ); iC:= iC + 3; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 7 ); iC:= iC + 4; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 7 ); iC:= iC + 5; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 8 ); iC:= iC + 1; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 8 ); iC:= iC + 2; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 8 ); iC:= iC + 3; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 8 ); iC:= iC + 4; end;
if Pos( ' ', S1 ) > 0 then begin Delete( S1, Pos(' ', S1), 8 ); iC:= iC + 5; end;
until Pos(' ', S1) + Pos(' ', S1) + Pos(' ', S1) + Pos(' ', S1) + Pos(' ', S1) + Pos(' ', S1) + Pos(' ', S1) + Pos(' ', S1) + Pos(' ', S1) + Pos(' ', S1) = 0;
LnWth[i]:= GetTextWidth( S1 ) + iC;
if LnWth[i] > LnMxWth then LnMxWth:= LnWth[i];
iC:= 0;
end;

for i:= 0 to SL0.Count - 1 do
begin
if GetTextWidth( SL0.Strings[i] ) > LnMxWth0 then LnMxWth0:= GetTextWidth( SL0.Strings[i] );
if ( GetTextWidth(SL0.Strings[i]) > LnMxWth1 ) and ( GetTextWidth(SL0.Strings[i]) < 17 ) then LnMxWth1:= GetTextWidth( SL0.Strings[i] );
end;

for i:= 0 to SL0.Count-1 do
begin
if SL0.Strings[i] = '' then Continue;
W:= ( LnMxWth - LnWth[i] ) + WSp + ( LnMxWth0 - GetTextWidth(SL0.Strings[i]) ) / 2;

S1:= SL0.Strings[i];
B0:= Ord( StrGet(S1, 1) );
if Length( SL0.Strings[i] ) > 1 then B1:= Ord( StrGet(S1, 2) );
if ( ChkBx3 = true ) and ( B0>=167 ) and ( B0<=175 ) then W:= ( LnMxWth - LnWth[i] ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i])
else if ( ChkBx3 = true ) and ( B0=130 ) and ( (B1=159) or (B1=161) or (B1=163) or (B1=165) or (B1=167) or (B1=193) or (B1=225) or (B1=227) or (B1=229) or (B1=236) ) then
W:= ( LnMxWth - LnWth[i] ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i])
else if ( ChkBx3 = true ) and ( B0=131 ) and ( (B1=64) or (B1=66) or (B1=68) or (B1=70) or (B1=72) or (B1=98) or (B1=131) or (B1=133) or (B1=135) or (B1=142) or (B1=149) or (B1=150) ) then
W:= ( LnMxWth - LnWth[i] ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i]);

SL.Strings[i]:= SL.Strings[i] + GetSpace2( W, RdItm ) + SL0.Strings[i];
end;
Result:= TrimRight( SL.Text );
finally
SL.free;
SL0.free;
end;
end;

end;

101 ◆2MbZnrMECE:2011/08/28(日) 20:33:35 ID:bP7Z0yhE
var
Form : TForm;
Panel0, Panel1 : TPanel;
Memo0, Memo1 : TMemo;
Button0, Button1, Button2, Button3 : TButton;
Label0, Label1, Label2, Label3 : TLabel;
Radio : TRadioGroup;
CheckBox0, CheckBox1, CheckBox2, CheckBox3 : TCheckBox;
Edit0, Edit1 : TEdit;
FtKd : String;
FtSz : Integer;


function MakeVerticalLine( S : String ) : String;
var
S0, CR : String;
I : Integer;
B : Byte;
SRp0, SRp1 : array of String;
begin
SRp0:= SeparateCSVText( Edit0.Text );
SRp1:= SeparateCSVText( Edit1.Text );
if GetArrayLength( SRp0 ) > GetArrayLength( SRp1 ) then
begin
SetArrayLength( SRp1, GetArrayLength(SRp0) );
for i:= GetArrayLength( SRp1 )+1 to GetArrayLength( SRp0 ) do SRp1[i]:= '';
end;

S:= S + #13;
repeat
for i:= 0 to GetArrayLength( SRp0 )-1 do
begin
if Pos( SRp0[i], S ) = 1 then
begin
S0:= S0 + CR + Copy( S, 1, Length(SRp0[i]) ) + #13#10;
Delete( S, 1, Length(SRp0[i]) );
i:= 0;
CR:= '';
end;
end;

B:= Ord( StrGet( S, 1 ) );
if ( (B>=128) and (B<=160) ) or ( (B>=224) and (B<=255) ) then
begin
if Copy( S, 1, 2 ) = ' ' then begin S0:= S0 + CR + #13#10; CR:= ''; end
else if ( CheckBox2.Checked = true ) and ( (Copy(S, 1, 2)='゛') or (Copy(S, 1, 2)='゜') ) then S0:= TrimRight( S0 ) + Copy( S, 1, 2 ) + #13#10
else begin S0:= S0 + CR + Copy( S, 1, 2 ) + #13#10; CR:= ''; end;
Delete( S, 1, 2 );
end

else
begin
if Copy( S, 1, 1 ) = ' ' then begin S0:= S0 + CR + #13#10; CR:= ''; end
else if (CheckBox1.Checked = true) and (B>=48) and (B<=57) then begin S0:= S0 + Copy( S, 1, 1 ); CR:= #13#10; end
// else if (CheckBox1.Checked = true) and (B>=33) and (B<=126) then begin S0:= S0 + Copy( S, 1, 1 ); CR:= #13#10; end
else if (CheckBox2.Checked = true) and ( (B=222) or (B=223) ) then S0:= TrimRight( S0 ) + Copy( S, 1, 1 ) + #13#10
else begin S0:= S0 + CR + Copy( S, 1, 1 ) + #13#10; CR:= ''; end;
Delete( S, 1, 1 );
end;
until Length( S ) = 0;

for i:= 0 to GetArrayLength( SRp0 )-1 do
S0:= ReplaseStr( S0, SRp0[i], SRp1[i] );
Result:= TrimRight( S0 );
end;

procedure ButtonConvertVertical( Sender : TObject );
var
SL : TStringList;
S, S0, Sp : String;
I : Integer;
begin
SL:= TStringList.Create;
try
SL.SetText( Memo0.Text );
if CheckBox0.Checked = true then
for i:= 0 to ( SL.Count-1 ) / 2 do SL.Exchange( i, SL.Count - 1 - i );
for i:= SL.Count-1 downto 0 do
begin
if SL.Strings[i] = '' then begin Sp:= Sp + ' '; Continue; end;
S0:= MakeVerticalLine( SL.Strings[i] );
S:= MakeVerticalText( S, S0, Sp, Radio.ItemIndex, CheckBox3.Checked );
Sp:= '';
end;
Memo1.Text:= S;
finally
SL.free;
end;
end;

102 ◆2MbZnrMECE:2011/08/28(日) 20:33:50 ID:bP7Z0yhE
procedure ButtonAddCR( Sender : TObject );
var
S, CR : String;
I : Integer;
SL : TStringList;
begin
SL:= TStringList.Create;
try
i:= 0;
SL.SetText( Memo0.Text );
if SL.Count < 2 then Exit;
repeat
if SL.Strings[SL.Count-1] = '' then begin SL.Delete(SL.Count-1); CR:= CR + #13#10; end;
until ( SL.Strings[SL.Count-1] <> '' ) or ( SL.Count = 1 );
repeat
if SL.Count = 1 then Break;
if SL.Strings[i] <> '' then SL.Insert( i+1, '' );
i:= i + 1;
until i = SL.Count-1;
Memo0.Text:= SL.Text + CR;
finally
SL.free;
end;
end;

procedure ButtonClear( Sender : TObject );
begin
Memo0.Clear;
end;

procedure Memo1Copy( Sender : TObject );
begin
Memo1.SelectAll;
Memo1.CopyToClipboard;
end;

procedure ButtonClose( Sender : TObject );
begin
Form.Close;
end;

procedure KeyPressEsc( Sender : TObject; var Key : Char );
begin
if Key = #27 then Form.Close;
end;

procedure FormReSize( Sender : TObject );
begin
Memo1.Width:= Form.Width - 230;
end;


begin

FtKd:= IniReadStr( AppPath + 'EditorOption\Default\OptionEditor.ini', 'Font', 'Name', 'MS P Gothic' );
FtSz:= IniReadInt( AppPath + 'EditorOption\Default\OptionEditor.ini', 'Font', 'Size', 12 );

Form:= TForm.Create( self );
Form.Width:= 450;
Form.Height:= 500;
Form.BorderStyle:= bsSizeable;
Form.FormStyle:= fsNormal;
Form.Caption:= '縦書きメーカー';
Form.KeyPreview:= true;
Form.OnKeyPress:= @KeyPressEsc;

Memo0:= TMemo.Create( Form );
Memo0.Parent:= Form;
Memo0.Align:= alTop;
Memo0.Height:= 140;
Memo0.WordWrap:= false;
Memo0.ScrollBars:= ssBoth;
Memo0.Color:= $EFEFEF;
Memo0.Font.Name:= 'MS Gothic';
Memo0.Font.Size:= FtSz;

Panel0:= TPanel.Create( Form );
Panel0.Parent:= Form;
Panel0.Align:= alClient;
Panel0.BevelOuter:= bvNone;
Panel0.BevelInner:= bvNone;
Panel0.BorderWidth:= 0;

Button0:= TButton.Create( Form );
Button0.Parent:= Panel0;
Button0.Left:= 3;
Button0.Top:= 5;
Button0.Width:= 80;
Button0.Height:= 28;
Button0.Caption:= '変換';
Button0.OnClick:= @ButtonConvertVertical;

Button1:= TButton.Create( Form );
Button1.Parent:= Panel0;
Button1.Left:= Button0.Left + 90;
Button1.Top:= Button0.Top;
Button1.Width:= 60;
Button1.Height:= Button0.Height;
Button1.Caption:= '行間空け';
Button1.OnClick:= @ButtonAddCR;

103 ◆2MbZnrMECE:2011/08/28(日) 20:34:05 ID:bP7Z0yhE

Button2:= TButton.Create( Form );
Button2.Parent:= Panel0;
Button2.Left:= Button1.Left + 65;
Button2.Top:= Button0.Top;
Button2.Width:= Button1.Width;
Button2.Height:= Button0.Height;
Button2.Caption:= 'クリア';
Button2.OnClick:= @ButtonClear;

Label0:= TLabel.Create( Form );
Label0.Parent:= Panel0;
Label0.Left:= 10;
Label0.Top:= Button0.Top + 32;
Label0.WordWrap:= false;
Label0.Caption:= '※スペースは1段空け、改行は全角スペース' + #13#10 + ' 1個分相当の行間幅に変換されます';

Radio:= TRadioGroup.Create( Form );
Radio.Parent:= Panel0;
Radio.Left:= 10;
Radio.Top:= Label0.Top + 33;
Radio.Width:= 190;
Radio.Height:= 75;
Radio.Caption:= '行間調整';
Radio.Items.Add('スペース + dot');
Radio.Items.Add('数値文字参照(10進数)');
Radio.Items.Add('数値文字参照(16進数)');
Radio.Columns:= 1;
Radio.ItemIndex:= 0;

CheckBox0:= TCheckBox.Create( Form );
CheckBox0.Parent:= Panel0;
CheckBox0.Left:= 10;
CheckBox0.Top:= Radio.Top + 80;
CheckBox0.Width:= 250;
CheckBox0.Caption:= '左→右へ改行';

CheckBox1:= TCheckBox.Create( Form );
CheckBox1.Parent:= Panel0;
CheckBox1.Left:= CheckBox0.Left;
CheckBox1.Top:= CheckBox0.Top + 20;
CheckBox1.Width:= CheckBox0.Width;
CheckBox1.Caption:= '半角数字は改行しない';
CheckBox1.Checked:= true;

CheckBox2:= TCheckBox.Create( Form );
CheckBox2.Parent:= Panel0;
CheckBox2.Left:= CheckBox0.Left;
CheckBox2.Top:= CheckBox1.Top + 20;
CheckBox2.Width:= CheckBox0.Width;
CheckBox2.Caption:= '濁点・半濁点は改行しない';
CheckBox2.Checked:= true;

CheckBox3:= TCheckBox.Create( Form );
CheckBox3.Parent:= Panel0;
CheckBox3.Left:= CheckBox0.Left;
CheckBox3.Top:= CheckBox2.Top + 20;
CheckBox3.Width:= CheckBox0.Width;
CheckBox3.Caption:= '小文字を右寄せ';
CheckBox3.Checked:= true;

Label1:= TLabel.Create( Form );
Label1.Parent:= Panel0;
Label1.Left:= 5;
Label1.Top:= CheckBox3.Top + 25;
Label1.Caption:= '置換文字';

Edit0:= TEdit.Create( Form );
Edit0.Parent:= Panel0;
Edit0.Left:= 8;
Edit0.Top:= Label1.Top + 15;
Edit0.Width:= 95;
Edit0.Text:= '。,、,ー,…,「,」,!?,!!';

Label2:= TLabel.Create( Form );
Label2.Parent:= Panel0;
Label2.Left:= Edit0.Left + 100;
Label2.Top:= Edit0.Top + 4;
Label2.Caption:= '→';

Edit1:= TEdit.Create( Form );
Edit1.Parent:= Panel0;
Edit1.Left:= Label2.Left + 16;
Edit1.Top:= Edit0.Top;
Edit1.Width:= Edit0.Width;
Edit1.Text:= ' ゚, `,|,:, ¬,└‐,!?,!!';

Label3:= TLabel.Create( Form );
Label3.Parent:= Panel0;
Label3.Left:= Edit0.Left;
Label3.Top:= Edit0.Top + 23;
Label3.Caption:= '(※文字毎にカンマで区切って下さい)';

Panel1:= TPanel.Create( Form );
Panel1.Parent:= Panel0;
Panel1.Align:= alBottom;
Panel1.Height:= 35;
Panel1.BevelOuter:= bvNone;
Panel1.BevelInner:= bvNone;
Panel1.BorderWidth:= 0;

104 ◆2MbZnrMECE:2011/08/28(日) 20:34:20 ID:bP7Z0yhE

Button3:= TButton.Create( Form );
Button3.Parent:= Panel1;
Button3.Left:= 5;
Button3.Top:= 2;
Button3.Width:= 85;
Button3.Height:= 28;
Button3.Caption:= '終了';
Button3.OnClick:= @ButtonClose;

Memo1:= TMemo.Create( Form );
Memo1.Parent:= Form;
Memo1.Align:= alRight;
Memo1.Width:= 220;
Memo1.WordWrap:= false;
Memo1.ScrollBars:= ssBoth;
Memo1.Color:= $EFEFEF;
Memo1.Font.Name:= FtKd;
Memo1.Font.Size:= FtSz;
Memo1.Text:= 'ここに縦書きに変換された' + #13#10 + 'テキストが出力されます。' + #13#10 + '(左クリックで一発コピー)';
Memo1.OnClick:= @Memo1Copy;

Form.OnReSize:= @FormReSize;

Form.Visible:= True;
while Form.Visible do Application.HandleMessage;
Form.Free;

end.
-------------------------------------------------------

105 ◆2MbZnrMECE:2011/08/28(日) 20:34:35 ID:bP7Z0yhE

▼概要

 テキストを縦書き風に変換するスクリプト。

─--─--─--─--──--─--─--─--─--─--─--─--─--─

                                     花
                                  .う . の
                                 つ 色
                              我 り .は
                         →   が に
                              身 け
                              世 り
花の色は                       →   に な
                              ふ
 うつりにけりな いたづらに               る . い
                         →      た
   我が身世にふる ながめせしまに    .   な . づ
                              が ら
                         →   め に
                              せ
                               .し
                              ま
                              に

─--─--─--─--──--─--─--─--─--─--─--─--─--─


▼機能説明

 上のテキストエリアに文字を入力して[変換]ボタンを押すと、右のテキストエリアに
 縦書きに変換されたものが出力されます。

 横書きで入力した半角/全角スペースは縦書きでは1文字分の空白に、
 同じく改行のみの行は全角スペース幅相当の行間スペースに変換されます。

 [行間空け]ボタンは押す度に上のテキストエリアの各行間に改行がひとつ追加、
 [クリア]ボタンは上のテキストエリアの内容を消去します。


 各文字を左右の端ではなく中心を基準に揃えるので、より自然な縦書きが作れます。
─--─--─--─--──--─--─--─--─--─--─--─--─--─

 |  く  |
 |  ぁ |
 |  w  |
 | せ |
 |  d  |
 |  r  |
 |  f   |
 |  t   |
 |  g  |
 |  y  |
 | ふ |
 |  じ  |
 |  こ  |
 |   l   |
 |  p  |

─--─--─--─--──--─--─--─--─--─--─--─--─--─

106 ◆2MbZnrMECE:2011/08/28(日) 20:34:50 ID:bP7Z0yhE

 [各オプション説明]

  ・ 行間調整
    縦書きの行間スペースを調整する方法を選択します。
    「スペース + dot」は厳密に揃えようとするとドットまみれになってしまうので、
    調整ドットを1個以下に抑える代わりに多少のズレは許容しています。
    「数値文字参照」はズレなく揃いドットも打たないので見た目がキレイに出来上がりますが、
    その分容量が増えるので注意してください。

    文字参照をスペースに変換した表示を確認するには、プレビューか内蔵ブラウザで見るか、
    [表示] - [エディタ] - [HTML数値文字参照] をオンにすると編集画面上でも確認できます。
    ただし、16進数文字参照は内蔵ブラウザ以外では元の文字として表示されます。


  ・ 左→右へ改行
    ONにすると縦書き文の行を左端から開始して、右に向かって追加していきます。

  ・ 半角数字は改行しない
    ONにすると連続した半角数字は1文字ずつ改行しないで、1段にまとめて横に並べます。

  ・ 濁点・半濁点は改行しない
    ONにすると「゙゚゛゜」は改行しないで直前の文字にくっつきます。

  ・ 小文字を右寄せ
    ONにすると「ぁぃぅぇぉっゃゅょゎ ァィゥェォッャュョヮヵヶ ァィゥェォッャュョ」は
    行の中心のラインではなく、右端に沿って揃えられます。

  ・ 置換文字
    左のエリアの各文字を、右エリアの文字に置き換えます。
    文字はカンマで区切った間を一単位として、左右それぞれ同じ順番目の文字が
    置換元と置換先に対応します。

    ここの初期値を変えたい場合は、ソースコートを直接編集してください。(460〜480行辺りです)

107 ◆2MbZnrMECE:2011/08/28(日) 20:35:05 ID:bP7Z0yhE

[サンプル]


「ー」や「…」等の横向きの文字や、「。」「、」といった縦に並べると
配置のバランスが悪くなる文字は、自動で別の文字に置き換えられます。
─--─--─--─--──--─--─--─--─--─--─--─--─--─
(スペース+dotで調整)

     シ  俺  お         い
      ョ  の  前     . 思  . い
     ン  ケ          い  .こ
     ベ  ツ          つ  .と
     ン  の           い
      . し  . 中         .た
     ろ  . で          . `
      ゚


(文字参照を使用)

  ね  ま  俺 お
   え  ち  を  前
  の が バ
  か  え  キ
   !?  て  ュ
     ん   |
      じ  ム
      ゃ  カ
        |
        と

─--─--─--─--──--─--─--─--─--─--─--─--─--─



拗音・促音等の小文字は、デフォルトで右寄せ配置されます。
─--─--─--─--──--─--─--─--─--─--─--─--─--─
(右寄せあり)

          オ       ち       市
     ギ  ン       ょ        ヶ
       ッ ド         っ      谷
      タ   ゥ       ち
      ン  ル       ゅ
     デ ル      ね
       ィ  ラ
      ス
      カ
      |
      !!


(右寄せなし)

          オ       ち       市
     ギ  ン         ょ        ヶ
      ッ  ド       っ       谷
      タ  ゥ         ち
      ン  ル       ゅ
     デ ル      ね
      ィ  ラ
      ス
      カ
      |
      !!

─--─--─--─--──--─--─--─--─--─--─--─--─--─

108 ◆2MbZnrMECE:2011/08/28(日) 20:35:19 ID:bP7Z0yhE

行と行の間に適当な区切り線を入れれば、罫線風の演出も可能(左)。

連続した文字を1文字ずつ改行せずひとかたまりとして扱いたい場合は、
置換機能を利用してください(右)。
─--─--─--─--──--─--─--─--─--─--─--─--─--─

  l    l    l    l             199X
  l 歩 l 座 l 立 l         世    年
  l  く  l れ l  て  l         界     |
  l 姿 l ば l ば l         は     |
  l は l キ  l  エ  l         核
  l  マ  l  ュ l  ン  l         の
  l  ジ  l   |   l  ジ  l         炎
  l  プ  l  ト  l  ェ l         に
  l  リ  l    l ル l         包
  l  テ  l    l    l          ま
  l   ィ l    l    l         れ
  l ! l    l    l         た
  l    l    l    l           !!

─--─--─--─--──--─--─--─--─--─--─--─--─--─





般若心経も縦書きにすればありがたみ五割増し!

─--─--─--─--─--─--─--─--─--─--──--─--─--─--─--─--─--─--─--─

  菩  即  能  是  得  究  心  以  乃  無  無  不  空  度  観
  提  説  除  大  阿  竟  無  無  至  眼  色  生  即  一  自
  薩  呪  一  神  耨  涅  罣  所  無  界      不  是  切  在
  婆  日  切  呪  多  槃  礙  得  老      無  滅  色  苦  菩
  訶      苦      羅          故  死  乃  受          厄  薩   摩
      羯      是  三  三  無          至  想  不  受           訶
  般  諦  真  大  藐  世  罣  菩  亦  無  行  垢  想  舎  行   般
  若      実  明  三  諸  礙  提  無  意  識  不  行  利  深   若
  心  羯  不  呪  菩  仏  故  薩  老  識      浄  識  子  般   波
  経  諦  虚      提          埵  死  界  無      亦      若   羅
              是      依  無      尽      眼  不  復  色  波   蜜
      波  故  無  故  般  有  依      無  耳  増  如  不  羅   多
      羅  説  上  知  若  恐  般  無  無  鼻  不  是  異  蜜   心
      羯  般  呪  般  波  怖  若  苦  明  舌  減      空  多   経
      諦  若      若  羅      波  集  亦  身      舎      時
          波  是  波  蜜  遠  羅  滅      意  是  利  空
      波  羅  無  羅  多  離  蜜  道  無      故  子  不  照
      羅  蜜  等  蜜  故  一  多      無  無  空      異  見
      僧  多  等  多      切  故  無  明  色  中  是  色  五
      羯  呪  呪          顛      智  尽  声      諸      蘊
      諦                  倒      亦      香      法  色  皆
                          夢      無      味      空  即  空
                          想      得      触      相  是
                                          法          空

─--─--─--─--─--─--─--─--─--─--──--─--─--─--─--─--─--─--─--─

109 ◆2MbZnrMECE:2011/08/28(日) 20:35:34 ID:bP7Z0yhE

ついでにこんなのも。


投票フォーマットがある程度守られてないと正しく集計してくれませんが、
その場合はどこが間違ってるか知らせてくれるので、正しい結果が得られるよう
投票スレmltの方を修正していってください。

詳しい使い方はヘルプを参照のこと。


■短編祭投票集計スクリプト
-------------------------------------------------------
const
Help =
'【短編祭投票集計スクリプト】'+#13#10+#13#10+
'▼使い方'+#13#10+#13#10+
'(1) まずここから「DatToMlt」をダウンロード'+#13#10+
'   http://sky.geocities.jp/edit_hinanzyo/'+#13#10+#13#10+
'(2) 投票が行なわれたスレのdatを、DatToMltで(´д`)Editで読める形式に変換する'+#13#10+
'   (ファイル形式はどれでもOK)'+#13#10+#13#10+
'(3) スクリプトを起動し、「カテゴリ」の欄に部門名、「トリップ&作品タイトル」の欄に'+#13#10+
'   エントリー作品の作者トリップと作品タイトルをそれぞれ入力する'+#13#10+#13#10+
'(4) 各部門の「集計基準」チェックボックスで、トリップと作品タイトルのどちらで'+#13#10+
'   検索して集計するか決める'+#13#10+#13#10+
'(5) (2)で変換した投票スレを(´д`)Editで開いた状態で「投票結果出力」を押すと、'+#13#10+
'   各部門の投票結果を得票順とエントリー順の2パターンで並べたテキストが出力される'+#13#10+#13#10+
'(6) 投票内容に問題があったレスは、投票結果と投票スレを変換したファイルの'+#13#10+
'   ページ名に表示される'+#13#10+#13#10+#13#10+
'▼その他細かいこと'+#13#10#13#10+
'・ 各部門の票は投票が行なわれたレス内の「カテゴリ」で入力した文字から、そのひとつ下の'+#13#10+
' 「カテゴリ」の間を検索して集計します。ひとつ下の「カテゴリ」が空なら、レスの末尾まで検索します。'+#13#10+
' レス全体を集計対象にしたい場合は、「カテゴリ1」を空にしてください。'+#13#10#13#10+
'・ 「トリップ&作品タイトル」欄は一行一作品で「◆トリップ  タイトル」という形で'+#13#10+
' 記入してください。トリップとタイトルの間は、全角/半角スペースのみで区切ってください。'+#13#10+
' トリップの前に文字列(コテハン)があってもトリップ部分のみで集計を行ないますが、'+#13#10+
' 集計結果ではコテハンは表示されません。'+#13#10#13#10+
'・ トリップやタイトルは正確に入力しないと正しい結果が得られない可能性があります。'+#13#10+
' また、タイトルで検索した場合、部分一致でもマッチしたとみなされ票がカウントされて'+#13#10+
' しまうので、短いタイトルには注意してください。'+#13#10+
' (例:「二人」という作品と「二人の理由」というエントリー作品があり、後者に投票があった場合、'+#13#10+
'  前者と後者をそれぞれ1票ずつ二重に集計してしまう)'+#13#10#13#10+
'・ 各レスを検索した結果、以下の場合に無効な投票とみなされ、投票結果とファイルのページ名に'+#13#10+
' 無効となった理由が示されます。これらが発生した場合、該当部門の票はカウントされません。'+#13#10+#13#10+
'  ・カテゴリなし'+#13#10+
'    → レス中に部門名が記入されていないか、間違って記入されています。'+#13#10#13#10+
'  ・投票作品なし'+#13#10+
'    → 投票するトリップが記入されていません。(「◆」を検索して見当たらない場合に出ます)'+#13#10#13#10+
'  ・トリップ間違い'+#13#10+
'    → 投票トリップは記入されていますが、エントリーしたトリップの中に'+#13#10+
'      該当するものがありません。'+#13#10#13#10+
'  ・投票なし/作品名間違い'+#13#10+
'    → 作品タイトルで集計した際、レス内にタイトルが記入されていないか、'+#13#10+
'      誤った名前で記入されています。';


function VoteCount( MmTxt, EdTxt0, EdTxt1 : String; RdItm : Integer ) : String;
var
S, S0, S1, S2, SChk : String;
Tr, Tl : array of String;
I, PgCnt, IPos, IPos0, IPos1, IPosSp0, IPosSp1 : Integer;
Vt : array of Integer;
SL : TStringList;
Chk : Boolean;
begin
SL:= TStringList.Create;
try
SL.SetText( TrimRight(MmTxt) );
SetArrayLength( Tr, SL.Count );
SetArrayLength( Tl, SL.Count );
SetArrayLength( Vt, SL.Count );
finally
SL.free;
end;

110 ◆2MbZnrMECE:2011/08/28(日) 20:35:49 ID:bP7Z0yhE

SL:= TStringList.Create;
try
SL.SetText( MmTxt );
for i:= 0 to SL.Count-1 do
begin
S:= SL.Strings[i];
IPos0:= Pos( '◆', S );
IPosSp0:= Pos( ' ', S );
IPosSp1:= Pos( ' ', S );
if IPos0 = 0 then IPos1:= Length( S ) + 1
else if ( IPosSp0 > 0 ) and ( IPosSp1 > 0 ) and ( IPosSp0 < IPosSp1 ) then IPos1:= IPosSp0
else if ( IPosSp0 > 0 ) and ( IPosSp1 > 0 ) and ( IPosSp0 > IPosSp1 ) then IPos1:= IPosSp1
else if ( IPosSp0 > 0 ) and ( IPosSp1 = 0 ) then IPos1:= IPosSp0
else if ( IPosSp1 > 0 ) and ( IPosSp0 = 0 ) then IPos1:= IPosSp1
else IPos1:= Length( S ) + 1;
Tr[i]:= Copy( S, IPos0, IPos1 - 1 );
Delete( S, 1, IPos1 - 1 );
S:= #13#10 + S;
repeat
S:= ReplaseStr( S, #10 + ' ', #10 );
S:= ReplaseStr( S, #10 + ' ', #10 );
until StrCount( S, #10 + ' ' ) + StrCount( S, #10 + ' ' ) = 0;
SL.Strings[i]:= TrimLeft( S );
Tl[i]:= Copy( SL.Strings[i], 1, Length( SL.Strings[i] ) );
end;
finally
SL.free;
end;

if RdItm= 0 then
begin
for PgCnt:= 0 to PageCount-1 do
begin
S:= PageText( PgCnt );
if EdTxt0 = '' then IPos:= 1 else IPos:= Pos( EdTxt0, S );
if IPos = 0 then
begin
if PageName( PgCnt ) = 'OK' then SetPageName( PgCnt, '' );
SetPageName( PgCnt, PageName( PgCnt ) + '『' + EdTxt0 + '』カテゴリなし?  ' );
SChk:= SChk + IntToStr( PgCnt+1 ) + 'ページ - 『' + EdTxt0 + '』カテゴリがありません' + #13#10;
Continue;
end;
Delete( S, 1, IPos-1 );
IPos:= Pos( EdTxt1, S );
if IPos = 0 then IPos:= Length(S) + 1;
Delete( S, IPos, Length(S) );
IPos:= Pos( '◆', S );
if IPos = 0 then
begin
if PageName( PgCnt ) = 'OK' then SetPageName( PgCnt, '' );
if EdTxt0 = '' then SetPageName( PgCnt, PageName( PgCnt ) + '投票作品なし?  ' )
else SetPageName( PgCnt, PageName( PgCnt ) + '『' + EdTxt0 + '』投票作品なし?  ' );
if EdTxt0 = '' then SChk:= SChk + IntToStr( PgCnt+1 ) + 'ページ - 投票作品がありません' + #13#10
else SChk:= SChk + IntToStr( PgCnt+1 ) + 'ページ - 『' + EdTxt0 + '』の投票作品がありません' + #13#10;
Continue;
end;
Chk:= false;
for i:= 0 to GetArrayLength( Tr )-1 do
begin
if Pos( Tr[i], S ) > 0 then begin Vt[i]:= Vt[i] + 1; Chk:= true; end;
end;
if Chk = false then
begin
if PageName( PgCnt ) = 'OK' then SetPageName( PgCnt, '' );
if EdTxt0 = '' then SetPageName( PgCnt, PageName( PgCnt ) + 'トリップ間違い?  ' )
else SetPageName( PgCnt, PageName( PgCnt ) + '『' + EdTxt0 + '』トリップ間違い?  ' );
if EdTxt0 = '' then SChk:= SChk + IntToStr( PgCnt+1 ) + 'ページ - 無効なトリップで投票されています' + #13#10
else SChk:= SChk + IntToStr( PgCnt+1 ) + 'ページ - 『' + EdTxt0 + '』が無効なトリップで投票されています' + #13#10;
Continue;
end;
if ( PageName( PgCnt ) = '' ) or ( PageName( PgCnt ) = 'OK' ) then SetPageName( PgCnt, 'OK' );
end;
end

111 ◆2MbZnrMECE:2011/08/28(日) 20:36:04 ID:bP7Z0yhE

else if RdItm= 1 then
begin
for PgCnt:= 0 to PageCount-1 do
begin
S:= PageText( PgCnt );
if EdTxt0 = '' then IPos:= 1 else IPos:= Pos( EdTxt0, S );
if IPos = 0 then
begin
if PageName( PgCnt ) = 'OK' then SetPageName( PgCnt, '' );
SetPageName( PgCnt, PageName( PgCnt ) + '『' + EdTxt0 + '』カテゴリなし?  ' );
SChk:= SChk + IntToStr( PgCnt+1 ) + 'ページ - 『' + EdTxt0 + '』カテゴリがありません' + #13#10;
Continue;
end;
Delete( S, 1, IPos-1 );
IPos:= Pos( EdTxt1, S );
if IPos = 0 then IPos:= Length(S) + 1;
Delete( S, IPos, Length(S) );
Chk:= false;
for i:= 0 to GetArrayLength( Tl )-1 do
begin
if Pos( Tl[i], S ) > 0 then begin Vt[i]:= Vt[i] + 1; Chk:= true; end;
end;
if Chk = false then
begin
if PageName( PgCnt ) = 'OK' then SetPageName( PgCnt, '' );
if EdTxt0 = '' then SetPageName( PgCnt, PageName( PgCnt ) + '投票なし/作品名間違い?  ' )
else SetPageName( PgCnt, PageName( PgCnt ) + '『' + EdTxt0 + '』投票なし/作品名間違い?  ' );
if EdTxt0 = '' then SChk:= SChk + IntToStr( PgCnt+1 ) + 'ページ - 投票がないか、無効な作品名で投票されています' + #13#10
else SChk:= SChk + IntToStr( PgCnt+1 ) + 'ページ - 『' + EdTxt0 + '』の投票がないか、無効な作品名で投票されています' + #13#10;
Continue;
end;
if PageName( PgCnt ) = '' then SetPageName( PgCnt, 'OK' );
end;
end;

for i:= 0 to GetArrayLength( Tr )-1 do
begin
S0:= Padz( IntToSTr(Vt[i]), 2 ) + '票  ' + Tr[i] + '  ' + Tl[i] + #13#10;
S1:= S1 + S0;
end;
if EdTxt0 = '' then Result:= '──────────────────────────────────────' + #13#10 + '                      集計結果(エントリー順)' + #13#10 + '──────────────────────────────────────' + #13#10 + S1 + #13#10#13#10
else Result:= '──────────────────────────────────────' + #13#10 + '                『' + EdTxt0 + '』集計結果(エントリー順)' + #13#10 + '──────────────────────────────────────' + #13#10 + S1 + #13#10#13#10;

for i:= 0 to GetArrayLength( Tr )-1 do
begin
S0:= Padz( IntToSTr(Vt[i]), 2 ) + '票' + Padz( IntToSTr(GetArrayLength(Tr)-i) , 3 ) + Tr[i] + '  ' + Tl[i] + #13#10;
S2:= S2 + S0;
end;
SL:= TStringList.Create;
try
SL.SetText( S2 );
SL.Sort;
for i:= 0 to ( SL.Count - 1 ) / 2 do SL.Exchange( i, SL.Count - 1 - i );
for i:= 0 to ( SL.Count - 1 ) do
begin
S0:= SL.Strings[i];
IPos:= Pos( '票', S0 ) + 2;
Delete( S0, IPos, 3 );
Insert( '  ', S0, IPos );
SL.Strings[i]:= S0;
end;
if EdTxt0 = '' then Result:= SChk + Result + '──────────────────────────────────────' + #13#10 + '                      集計結果(得票順)' + #13#10 + '──────────────────────────────────────' + #13#10 + SL.Text + #13#10#13#10
else Result:= SChk + Result + '──────────────────────────────────────' + #13#10 + '                『' + EdTxt0 + '』集計結果(得票順)' + #13#10 + '──────────────────────────────────────' + #13#10 + SL.Text + #13#10#13#10;
finally
SL.free;
end;
end;

112 ◆2MbZnrMECE:2011/08/28(日) 20:36:19 ID:bP7Z0yhE
var

Form : TForm;
ScrollBox : TScrollBox;
Edit : array[0..5] of TEdit;
Radio : array[0..5] of TRadioGroup;
Memo : array[0..5] of TMemo;
Labl : array[0..11] of TLabel;
Button0, Button1, Button2 : TButton;
i, LbTp : Integer;

procedure ButtonOutputVote( Sender : TObject );
var
S : array[0..5] of String;
I : Integer;
begin
for i:= 0 to PageCount-1 do SetPageName( i, '' );
for i:= 0 to 5 do
begin
if ( i > 0 ) and ( Edit[i].Text = '') then break;
if Memo[i].Text = '' then break;
S[i]:= VoteCount( Memo[i].Text, Edit[i].Text, Edit[i+1].Text, Radio[i].ItemIndex );
end;

FileOpenB( S[0] + S[1] + S[2] + S[3] + S[4] + S[5] );
end;

procedure MemoClear( Sender : TObject );
begin
Memo[0].Clear;
end;

procedure ButtonClose( Sender : TObject );
begin
Form.Close;
end;

procedure ButtonHelp( Sender : TObject );
begin
FileOpenB( Help );
end;

procedure KeyPressEsc( Sender : TObject; var Key : Char );
begin
if Key = #27 then Form.Close;
end;

begin

Form:= TForm.Create( self );
Form.Width:= 600;
Form.Height:= 440;
Form.BorderStyle:= bsDialog;
Form.FormStyle:= fsNormal;
Form.Caption:= '短編祭投票集計スクリプト';
Form.KeyPreview:= true;
Form.OnKeyPress:= @KeyPressEsc;

ScrollBox:= TScrollBox.Create( Form );
ScrollBox.Parent:= Form;
ScrollBox.Width:= 590;
ScrollBox.Height:= 360;
ScrollBox.AutoScroll:= true;

Labl[0]:= TLabel.Create( Form );
Labl[0].Parent:= ScrollBox;
Labl[0].Left:= 5;
Labl[0].Top:= 5;
Labl[0].Caption:= '【カテゴリ 1】';

for i:= 1 to 5 do
begin
Labl[i]:= TLabel.Create( Form );
Labl[i].Parent:= ScrollBox;
Labl[i].Left:= Labl[0].Left;
Labl[i].Top:= Labl[i-1].Top + 125;
Labl[i].Caption:= '【カテゴリ ' + IntToStr( i + 1 ) + '】';
end;

Labl[6]:= TLabel.Create( Form );
Labl[6].Parent:= ScrollBox;
Labl[6].Left:= 115;
Labl[6].Top:= 5;
Labl[6].Caption:= '【トリップ&作品タイトル 1】';

for i:= 7 to 11 do
begin
Labl[i]:= TLabel.Create( Form );
Labl[i].Parent:= ScrollBox;
Labl[i].Left:= Labl[6].Left;
Labl[i].Top:= Labl[i-1].Top + 125;
Labl[i].Caption:= '【トリップ&作品タイトル ' + IntToStr( i - 5 ) + '】';
end;

Edit[0]:= TEdit.Create( Form );
Edit[0].Parent:= ScrollBox;
Edit[0].Left:= 7;
Edit[0].Top:= Labl[0].Top + 15;
Edit[0].Width:= 105;
Edit[0].Text:= '';

113 ◆2MbZnrMECE:2011/08/28(日) 20:36:34 ID:bP7Z0yhE
Radio[0]:= TRadioGroup.Create( Form );
Radio[0].Parent:= ScrollBox;
Radio[0].Left:= 4;
Radio[0].Top:= Edit[0].Top + 25;
Radio[0].Width:= 110;
Radio[0].Height:= 40;
Radio[0].Caption:= '集計基準';
Radio[0].Items.Add('トリップ');
Radio[0].Items.Add('タイトル');
Radio[0].Columns:= 2;
Radio[0].ItemIndex:= 0;

Memo[0]:= TMemo.Create( Form );
Memo[0].Parent:= ScrollBox;
Memo[0].Left:= Edit[0].Left + 110;
Memo[0].Top:= Edit[0].Top;
Memo[0].Width:= 440;
Memo[0].Height:= 100;
Memo[0].WordWrap:= false;
Memo[0].ScrollBars:= ssBoth;
Memo[0].Text:= '◆TripYaruo1  作品タイトル1'+#13#10+'◆TripYaruo2  作品タイトル2'+#13#10+'         :'+#13#10+'         ・'+#13#10+'という形式で貼り付けてください。トリップと作品タイトルの間の区切りは、'+#13#10+'全角/半角スペースのみを使用してください。';
Memo[0].OnEnter:= @MemoClear;

for i:= 1 to 5 do
begin
Edit[i]:= TEdit.Create( Form );
Edit[i].Parent:= ScrollBox;
Edit[i].Left:= Edit[0].Left;
Edit[i].Top:= Labl[i].Top + 15;
Edit[i].Width:= Edit[0].Width;
end;

for i:= 1 to 5 do
begin
Radio[i]:= TRadioGroup.Create( Form );
Radio[i].Parent:= ScrollBox;
Radio[i].Left:= Radio[0].Left;
Radio[i].Top:= Edit[i].Top + 25;
Radio[i].Width:= Radio[0].Width;
Radio[i].Height:= Radio[0].Height;
Radio[i].Caption:= '集計基準';
Radio[i].Items.Add('トリップ');
Radio[i].Items.Add('タイトル');
Radio[i].Columns:= 2;
Radio[i].ItemIndex:= 0;
end;

for i:= 1 to 5 do
begin
Memo[i]:= TMemo.Create( Form );
Memo[i].Parent:= ScrollBox;
Memo[i].Left:= Edit[0].Left + 110;
Memo[i].Top:= Edit[i].Top;
Memo[i].Width:= Memo[0].Width;
Memo[i].Height:= Memo[0].Height;
Memo[i].WordWrap:= false;
Memo[i].ScrollBars:= ssBoth;
end;

for i:= 1 to 5 do
begin
Edit[i].TabOrder:= i * 3;
Radio[i].TabOrder:= i * 3 + 1;
Memo[i].TabOrder:= i * 3 + 2;
end;

Button0:= TButton.Create( Form );
Button0.Parent:= Form;
Button0.Left:= 170;
Button0.Top:= 370;
Button0.Width:= 90;
Button0.Height:= 35;
Button0.Caption:= '投票結果出力';
Button0.OnClick:= @ButtonOutputVote;


Button1:= TButton.Create( Form );
Button1.Parent:= Form;
Button1.Left:= Button0.Left + 130;
Button1.Top:= Button0.Top;
Button1.Width:= Button0.Width;
Button1.Height:= Button0.Height;
Button1.Caption:= '閉じる';
Button1.OnClick:= @ButtonClose;

Button2:= TButton.Create( Form );
Button2.Parent:= Form;
Button2.Left:= Button1.Left + 190;
Button2.Top:= Button0.Top;
Button2.Width:= Button0.Width;
Button2.Height:= Button0.Height;
Button2.Caption:= 'ヘルプ';
Button2.OnClick:= @ButtonHelp;

Form.Visible:= True;
while Form.Visible do Application.HandleMessage;
Form.Free;

end.
-------------------------------------------------------

114 ◆2MbZnrMECE:2011/08/28(日) 20:36:48 ID:bP7Z0yhE

アレですね、ロダにいちいち上げないでDropBoxの共有フォルダに突っ込めば良かったんだよ。
今度からそうしよう。
過去に作ったのでコピペするのが大変そうなやつもその内上げときます。


縦書きメーカー
http://dl.dropbox.com/u/37791434/VerticalTextMaker.epp

投票集計
http://dl.dropbox.com/u/37791434/VoteCount.epp

115小さな名無しさん@この板は300レスまで:2011/08/28(日) 20:50:42 ID:gyWn5h6I
おお〜、縦書きありがたや〜。

乙です。

116小さな名無しさん@この板は300レスまで:2011/08/28(日) 20:55:04 ID:w20jcz92
乙です。

流れる可能性もあるから、レスは続けた方がいいかも

117 ◆SPNXXX34sg:2011/08/28(日) 20:56:16 ID:3b4Fk2Ok
縦書きは素晴らしいな
てか作ろうかと思ってた
ありがてえ

118 ◆2MbZnrMECE:2011/08/28(日) 21:47:46 ID:bP7Z0yhE
やべ、よく考えたら>>100のレスそのままコピペしたら文字化けしちゃうよ。
差し替えるんでコピペしようとしてる人は>>114のDL版使うかちょっと待ってください。

119 ◆2MbZnrMECE:2011/08/28(日) 21:54:44 ID:bP7Z0yhE
>>98差し替え
-------------------------------------------------------
function GetSpace1( W : Integer ) : String;
var
W0, I, IC : Integer;
S : String;
begin
if W < 2 then S:= ''
else if W < 5 then S:= '.'
else if W < 7 then S:= ' '
else if W < 10 then S:= '. '
else if W < 13 then S:= ' '
else if W = 13 then S:= ' . '
else if W = 15 then S:= '. '
else if W = 18 then S:= '.  '
else for I:= 0 to W/16 do
begin
W0:= W - 16 * I;
if W0 mod 11 = 0 then begin for IC:= 1 to W0/11 do S:= S + ' '; for IC:= 1 to I do S:= S + '  '; Break; end
else if W0 = 0 then begin for IC:= 1 to W/16 do S:= S + '  '; Break; end
else if W0 = 5 then begin for IC:= 1 to I do S:= S + '  '; S:= ' ' + S; Break; end
else if W0 = 8 then begin for IC:= 1 to I do S:= S + '  '; S:= S + '. '; Break; end
else if W0 = 13 then begin for IC:= 1 to I do S:= S + '  '; S:= ' ' + S + '. '; Break; end;
end;
Result:= S;
end;

function GetSpace2( W, RdItm : Integer ) : String;
var
W0, I, I0, I1 : Integer;
S : String;
begin
while S = '' do
begin
if W = 0 then begin Result:= ''; Exit; end
else if W = 1 then begin if RdItm = 1 then S:= '&#8202;' else if RdItm = 2 then S:= '&#x200A;'; end
else if W = 2 then begin if RdItm = 1 then S:= '&#8201;' else if RdItm = 2 then S:= '&#x2009;'; end
else if W = 3 then begin if RdItm = 1 then S:= '&#8198;' else if RdItm = 2 then S:= '&#x2006;'; end
else if W = 4 then begin if RdItm = 1 then S:= '&#8197;' else if RdItm = 2 then S:= '&#x2005;'; end
else if W = 10 then begin if RdItm = 1 then S:= ' &#8196;' else if RdItm = 2 then S:= ' &#x2004;'; end
else for i:= 0 to W/16 do
begin
W0:= W - 16 * i;
if W0 mod 11 = 0 then begin for i0:= 1 to W0/11 do S:= S + ' '; for i0:= 1 to I do S:= S + '  '; Break; end
else if W0 = 0 then begin for i0:= 1 to W/16 do S:= S + '  '; Break; end
else if W0 = 5 then begin for i0:= 1 to I do S:= S + '  '; S:= ' ' + S; Break; end
end;
if S = '' then begin i1:= i1 + 1; W:= W - 1; Continue; end;
end;

if i1 = 1 then begin if RdItm = 1 then S:= S + '&#8202;' else if RdItm = 2 then S:= S + '&#x200A;'; end
else if i1 = 2 then begin if RdItm = 1 then S:= S + '&#8201;' else if RdItm = 2 then S:= S + '&#x2009;'; end
else if i1 = 3 then begin if RdItm = 1 then S:= S + '&#8198;' else if RdItm = 2 then S:= S + '&#x2006;'; end
else if i1 = 4 then begin if RdItm = 1 then S:= S + '&#8197;' else if RdItm = 2 then S:= S + '&#x2005;'; end;
Result:= S;
end;

function SeparateCSVText( S : String ) : array of String;
var
S0 : String;
I, IPos : Integer;
begin
S0:= S;
if Pos( ',', S0 ) = 0 then SetArrayLength( Result, 1 )
else begin
repeat
Delete( S0, 1, Pos( ',', S0 ) );
i:= i + 1;
until Pos( ',', S0 ) = 0
SetArrayLength( Result, i + 1 )
end;

for i:= 0 to GetArrayLength( Result ) - 1 do
begin
IPos:= Pos( ',', S );
if IPos = 0 then Result[i]:= S
else Result[i]:= Copy( S, 1, IPos-1 );
Delete( S, 1, IPos );
end;
end;

120 ◆2MbZnrMECE:2011/08/28(日) 21:55:40 ID:bP7Z0yhE
>>100差し替え
-------------------------------------------------------
for i:= 0 to SL.Count - 1 do
begin
S1:= SL.Strings[i];
repeat
if Pos( '&#8202;', S1 ) > 0 then begin Delete( S1, Pos('&#8202;', S1), 7 ); iC:= iC + 1; end;
if Pos( '&#8201;', S1 ) > 0 then begin Delete( S1, Pos('&#8201;', S1), 7 ); iC:= iC + 2; end;
if Pos( '&#8198;', S1 ) > 0 then begin Delete( S1, Pos('&#8198;', S1), 7 ); iC:= iC + 3; end;
if Pos( '&#8197;', S1 ) > 0 then begin Delete( S1, Pos('&#8197;', S1), 7 ); iC:= iC + 4; end;
if Pos( '&#8196;', S1 ) > 0 then begin Delete( S1, Pos('&#8196;', S1), 7 ); iC:= iC + 5; end;
if Pos( '&#x200A;', S1 ) > 0 then begin Delete( S1, Pos('&#x200A;', S1), 8 ); iC:= iC + 1; end;
if Pos( '&#x2009;', S1 ) > 0 then begin Delete( S1, Pos('&#x2009;', S1), 8 ); iC:= iC + 2; end;
if Pos( '&#x2006;', S1 ) > 0 then begin Delete( S1, Pos('&#x2006;', S1), 8 ); iC:= iC + 3; end;
if Pos( '&#x2005;', S1 ) > 0 then begin Delete( S1, Pos('&#x2005;', S1), 8 ); iC:= iC + 4; end;
if Pos( '&#x2004;', S1 ) > 0 then begin Delete( S1, Pos('&#x2004;', S1), 8 ); iC:= iC + 5; end;
until Pos('&#8202;', S1) + Pos('&#8201;', S1) + Pos('&#8198;', S1) + Pos('&#8197;', S1) + Pos('&#8196;', S1) + Pos('&#x200A;', S1) + Pos('&#x2009;', S1) + Pos('&#x2006;', S1) + Pos('&#x2005;', S1) + Pos('&#x2004;', S1) = 0;
LnWth[i]:= GetTextWidth( S1 ) + iC;
if LnWth[i] > LnMxWth then LnMxWth:= LnWth[i];
iC:= 0;
end;

for i:= 0 to SL0.Count - 1 do
begin
if GetTextWidth( SL0.Strings[i] ) > LnMxWth0 then LnMxWth0:= GetTextWidth( SL0.Strings[i] );
if ( GetTextWidth(SL0.Strings[i]) > LnMxWth1 ) and ( GetTextWidth(SL0.Strings[i]) < 17 ) then LnMxWth1:= GetTextWidth( SL0.Strings[i] );
end;

for i:= 0 to SL0.Count-1 do
begin
if SL0.Strings[i] = '' then Continue;
W:= ( LnMxWth - LnWth[i] ) + WSp + ( LnMxWth0 - GetTextWidth(SL0.Strings[i]) ) / 2;

S1:= SL0.Strings[i];
B0:= Ord( StrGet(S1, 1) );
if Length( SL0.Strings[i] ) > 1 then B1:= Ord( StrGet(S1, 2) );
if ( ChkBx3 = true ) and ( B0>=167 ) and ( B0<=175 ) then W:= ( LnMxWth - LnWth[i] ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i])
else if ( ChkBx3 = true ) and ( B0=130 ) and ( (B1=159) or (B1=161) or (B1=163) or (B1=165) or (B1=167) or (B1=193) or (B1=225) or (B1=227) or (B1=229) or (B1=236) ) then
W:= ( LnMxWth - LnWth[i] ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i])
else if ( ChkBx3 = true ) and ( B0=131 ) and ( (B1=64) or (B1=66) or (B1=68) or (B1=70) or (B1=72) or (B1=98) or (B1=131) or (B1=133) or (B1=135) or (B1=142) or (B1=149) or (B1=150) ) then
W:= ( LnMxWth - LnWth[i] ) + WSp + ( (LnMxWth0 - LnMxWth1) / 2 ) + LnMxWth1 - GetTextWidth(SL0.Strings[i]);

SL.Strings[i]:= SL.Strings[i] + GetSpace2( W, RdItm ) + SL0.Strings[i];
end;
Result:= TrimRight( SL.Text );
finally
SL.free;
SL0.free;
end;
end;

end;

121 ◆2MbZnrMECE:2011/08/28(日) 22:00:43 ID:bP7Z0yhE
差し替え版は

http://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1312294474/119,99,120,101-104

の順番でコピペしてください。
専ブラだとコレでちゃんとポップアップできるはず。

122小さな名無しさん@この板は300レスまで:2011/08/29(月) 02:53:16 ID:sh7KipeE
>>76を落としてみたんですが、Scriptフォルダに置くと>>87になり、
Libraryフォルダに置くと「起動はするけど合成AAが作成されない」って状況になってます

一応、スクリプトを追加する時にLibraryに置いて普段はScriptフォルダに出すって形で導入出来そうですが…

123 ◆SPNXXX34sg:2011/08/29(月) 04:25:47 ID:xmuqpWlE
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
合成パネルスクリプト更新しました
合成フォルダをEdit.exeのあるフォルダに置いてください
合成パネル.eppはLibraryフォルダに置いてください

以前のバージョンで動かなかった方もこれで動くといいのですが・・・

また旧バージョンで行頭スペースが発生したり不必要に_を打つバグがあったので修正しています

124小さな名無しさん@この板は300レスまで:2011/08/29(月) 09:53:32 ID:nHuVqCVM
>>123
申し訳ないのですが、旧バージョンの方再アップしていただけないでしょうか。
私の環境だと、旧は問題なく動いていたのですが
新の方だと、下絵、上絵ともに読み込まず、「合成」を押しても反応がなくなり、
その状態で上絵移動、下絵移動のどちらを押してもエラーで強制終了するようになってしまいました。

125124:2011/08/29(月) 09:58:22 ID:nHuVqCVM
自己解決しました、すいません。
旧フォルダに上書きしてたのが駄目だったみたいです。

126 ◆SPNXXX34sg:2011/08/29(月) 15:30:05 ID:xmuqpWlE
>>124
既に解決したようですがサイトの合成パネル.zipの右の旧バージョンってとこにありました

127小さな名無しさん@この板は300レスまで:2011/08/29(月) 17:55:24 ID:sh7KipeE
>>123
新バージョンだとLibraryに置いてもScriptに置いても起動はするんだけど合成を押しても無反応って状況です

128 ◆SPNXXX34sg:2011/08/29(月) 18:01:26 ID:xmuqpWlE
>>127
合成フォルダの中の合成.iniをテキストファイルとして開いて
内容に下絵と上絵は記述されてますか?

129小さな名無しさん@この板は300レスまで:2011/08/29(月) 18:24:31 ID:sh7KipeE
>>128
多分デフォルトの円のAAがあるだけで反映されてません

130 ◆SPNXXX34sg:2011/08/29(月) 18:50:45 ID:xmuqpWlE
>>129
合成フォルダはEdit.exeのあるフォルダと同じフォルダにありますか?

131小さな名無しさん@この板は300レスまで:2011/08/29(月) 18:59:07 ID:sh7KipeE
>>130
あ、合成パネル.eppと一緒にScriptに置いてました
Edit.exeと同じフォルダに置いたら正常に作動するようになりました。ありがとうございました

132 ◆SPNXXX34sg:2011/08/29(月) 19:01:02 ID:xmuqpWlE
>>131
解決して何よりです

133小さな名無しさん@この板は300レスまで:2011/08/29(月) 21:25:10 ID:o5CatvbY
今気づきましたが、
>>114のDL版の縦書きスクリプトも文字化けしてるみたいです。

手動で360行目と504行目を直す必要があります。

134 ◆2MbZnrMECE:2011/08/29(月) 21:54:56 ID:PID9RF8Y
>>133
修正して上げ直しました、すいません。

ついでに以前言ってた、フォームを閉じないと(´д`)Editが終了できない問題の
修正方法が分かったので、それにも対策を施しました。
これでスクリプトのウィンドウが開いたままでも、(´д`)Editの終了と同時に
閉じるようになってるはずです。
以前作ったやつで同じ症状が出るスクリプトも、順次修正して上げていきます。

とりあえず縦書きメーカーだけ。
http://dl.dropbox.com/u/37791434/VerticalTextMaker.epp

135 ◆2MbZnrMECE:2011/08/29(月) 22:05:06 ID:PID9RF8Y
そういえば旧やる夫板の(´д`)Editスレでも、サムネイルで一覧表示できる
AAビューアを開発されてる方がいるみたいですが、>>94と同じ人なのかな?
よくわかんないけどとりあえず紹介しとこう。

ttp://yy700.60.kg/test/read.cgi/yaruo/1232413120/756-

136小さな名無しさん@この板は300レスまで:2011/08/29(月) 22:25:00 ID:o5CatvbY
>>134
問題なく動きました

>>135
おお、こういうものもあるのか! シンプルでいい感じ
作ってる人は別の人ですね

137小さな名無しさん@この板は300レスまで:2011/08/29(月) 22:43:26 ID:yVTSoplA
乙です、皆様のおかげでのここ数ヶ月の作業環境の激変には感動しております

>>134使ってみたのですが、
たとえば作業した後保存してない状態でうっかり(´д`)Edit側を閉じると
「保存しますか?」のダイアログが出て一個は保存できますが
その一個でエラーが出て強制的に落ちるので
二個以上変更されているファイルがある場合、後のは保存できずに落ちるっぽい感じ。
結構特殊例ですがご報告。XPSP3

138 ◆SPNXXX34sg:2011/08/29(月) 23:32:32 ID:xmuqpWlE
IniEraseSection 手続きが使えない気がするんですが気のせいですか?

139 ◆2MbZnrMECE:2011/08/30(火) 00:31:36 ID:kW9VDSew
使ったこと無いけどちょいと調べてみたらどうも機能してないっぽいですね。
TMemIniFileとかTIniFileってやつで代用できそうなんで、そっちを使った方が
いいみたいです。

ttp://docwiki.embarcadero.com/VCL/ja/IniFiles.TMemIniFile
ttp://docwiki.embarcadero.com/VCL/ja/IniFiles.TMemIniFile_Functions


■サンプルコード
----------------------------
var
Ini: TMemIniFile;
begin

//iniファイルへ書き込み
Ini := TMemIniFile.Create( AppPath + 'Test.ini' );
Ini.WriteString('TEST', 'test', 'ABC');

//iniファイルのセクションを消去
Ini := TMemIniFile.Create( AppPath + 'Test.ini' );
Ini.EraseSection( 'TEST );

Ini.UpdateFile;
Ini.Free;

end.
----------------------------

140 ◆2MbZnrMECE:2011/08/30(火) 00:32:17 ID:kW9VDSew
どうも(´д`)Editの独自関数にはいくつか怪しいのがあるみたいです。
StrCountってのも数が増えたり減ったりいまいち正しくカウントしてくれないことが
あるみたいなので、使う機会があったら気をつけてください。

141 ◆2MbZnrMECE:2011/08/30(火) 00:43:27 ID:kW9VDSew
忘れてた。

>>137
報告ありがとうございます。原因調べて修正しときます。

142 ◆2MbZnrMECE:2011/08/30(火) 00:57:22 ID:kW9VDSew
って先にフォームを閉じて(´д`)Edit終了してもエラーになっちゃうのか。

とりあえず>>133だけ修正したものに戻したので、お手数ですが再々度
差し替えお願いします。度々申し訳ありません。

143 ◆SPNXXX34sg:2011/08/30(火) 01:07:26 ID:pNGvNfRs
>>139
おお!すごくありがたいです

144 ◆SPNXXX34sg:2011/08/30(火) 18:57:22 ID:pNGvNfRs
合成パネル機能追加しました
以下のサイトから透過合成.zipをダウンロードして下さい
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo


解凍して合成2フォルダをEdit.exeのあるフォルダに
合成パネル.eppと透過.eppをScriptフォルダ内のLibraryフォルダに置いてください

Editを起動して合成パネル.eppを実行してください
合成後、合成結果の透過したい部分にキャレットを合わせ透過ボタンを押すと自動でキャレット場所前後の空白域を透過します
(空白部分しか透過できないのでご注意)

透過.eppは透過ボタンと同じ効果です
透過ボタンを連打するのが大変だと思うのでこれをショートカット登録すると便利だと思います

作例
              _.。ャぁて丕刀フ7ゎ。._                ,.ィ炙ヲ㌍≠┴⇒弍j込ス>。
           ,.ィ炙ヲ㌍≠┴⇒弍j込ス>。          ,ィ升ヲナ'´           `゙'<...._.。ャぁて丕刀フ7ゎ。._
.        ,ィ升ヲナ'´           `゙'<弖心、.       ;夕フア´              ,.ィ炙ヲ㌍≠┴⇒弍j込ス>。
.        ;夕フア´                \ホi心....   んfiУ             ,ィ升ヲナ'´..ij∧.       `゙'<弖心、
       んfiУ                _.。ャぁて丕. 从j'Y.゙。._          ;夕フア´   ∨iハ.         \ホi心
       从j'Y                  ,.ィ炙ヲ㌍≠┴゙斤Wj込ス>。.         んfiУ      ㌣い           ▽ij∧
.       斤W                 ,ィ升ヲナ'´..㌣い  |友カ.`゙'<弖心、...   从j'Y.      }ソ川.            ∨iハ
     |友カ                 ;夕フア´...  }ソ川.. い叭    \ホi心.   斤W.       仄ガ             ㌣い
.       い叭.             んfiУ      仄ガ.  Wi从     ▽ij∧.   |友カ.      从ノリ             }ソ川
.     Wi从          从j'Y.       从ノリ..  ∀t△     ∨iハ   い叭.      ∧fリ/           仄ガ
.      ∀t△         斤W      ∧fリ/.     ゙マじへ、..  ㌣い.  Wi从.   /リiУ           从ノリ
       ゙マじへ、         |友カ..   /リiУ.       \夊i㌧、_...}ソ川.   ∀t△.゙イ!刋/             ∧fリ/
        \夊i㌧、_     い叭.....,.イ!刋/          `マ才i「≧ェ。。.。 ゙マじへ、. '゚                /リiУ
         `マ才i「≧ェ。。..Wi从...テ少'゚            `゚'' ミ芝玉竺壬.゙\夊i㌧、_             ,.イ!刋/
           `゚'' ミ芝玉竺゙∀t△..'´                ∧fリ/.       `マ才i「≧ェ。。.。。っ夭テ少'゚
                         ゙マじへ、             /リiУ.          `゚'' ミ芝玉竺壬云=‐'´
                          \夊i㌧、_             ,.イ!刋/
                           `マ才i「≧ェ。。.。。っ夭テ少'゚
                             `゚'' ミ芝玉竺壬云=‐'´

145 ◆SPNXXX34sg:2011/08/30(火) 19:11:59 ID:pNGvNfRs
こういう合成もサクッとできるようになります
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
    二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二

                 ___>` ー---|`ー -- 、
               ,ィ´ ァ:.: : : : : : : :.:.:.:|: : : : : : : \
              / / : /:.: /: :.,イ: :./|:.!: \: .: : : : :<⌒ヽ
               /:/: :/: :./___/ !: / .|:.|l: .:__ヽ: :.\:.:ヽ\ \
               /イ: :/: :./´:./` |/  |:.||ヽ: :`ヽ: : :.ヽ: :} \{
                /: :.': :.:i: :./  |   Ⅵ  \: :|: : : :.∨ /
               ': : { : : |:./ ,_        _, ヽ!:.:: :.|:.:|ィ´
               |: :/|: : :|イ ィ=ミ    ィ=ミ } : : ト、!:|
               |;イ: ! :./`|           ム : : |:/: |
                 |:|.:V:l`ri^ixx  、__,   xxrvィヘ : |: : :|
                 |:|: : :l: :〉、`ー-、 .___ ,.-‐' /:.:.:V: : : |
                 |:|: : :l:/ `ァ  〉r‐┤  r‐':./}:!: : : :|
                 |:|: : :l{.  /   /:.:l ./|   |: :/  |:l:.:. :.:.|
                 |:|: : :l| /   ∧:.:|/:.l  |:/  .!:l: : :.:.|

           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||                     | :|
           ||.       \、.             | :|
           ||.     ___>` ー---|`ー --......| :|
           ||.   ,ィ´ ァ:.: : : : : : : :.:.:.:|: : : : : : : | :|
           || . / / : /:.: /: :.,イ: :./|:.!: \: .: :| :| :<⌒ヽ
           ||.   /:/: :/: :./___/ !: / .|:.|l: .:__ヽ: | :|..:.:ヽ\ \
           ||.   /イ: :/: :./´:./` |/  |:.||ヽ: :` . | :| ヽ: :} \{
           ||...... /: :.': :.:i: :./  |   Ⅵ  \:.゙| :| : :.∨ /
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||.   |: :/|: : :|イ ィ=ミ    ィ=ミ | :| : ト、!:|
           ||.   |;イ: ! :./`|             | :|゙: |:/: |
           ||....  |:|.:V:l`ri^ixx  、__,   xxr..゙| :|゙: |: : :|
           ||....  |:|: : :l: :〉、`ー-、 .___ ,.-‐'.. | :| : : : |
           ||....  |:|: : :l:/ `ァ  〉r‐┤  r‐':..| :|゙!: : : :|
           ||....  |:|: : :l{.  /   /:.:l ./|   |: :/゙| :|:l:.:. :.:.|
    二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二

146小さな名無しさん@この板は300レスまで:2011/08/30(火) 20:35:58 ID:gddlWxZA
乙! これまた素晴らしいですな。

147 ◆SPNXXX34sg:2011/08/30(火) 21:26:18 ID:pNGvNfRs
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo

AA全体を左右移動させるスクリプト(右寄せ.epp, 左寄せ.epp)
選択範囲を空白に置換するスクリプト(空白置換.epp)
も更新しました
調整ドットじゃないピリオドが消えにくくなったり、余計な調整ドットを打たなくなったりしてます

148小さな名無しさん@この板は300レスまで:2011/08/30(火) 22:54:47 ID:8SUJMyEs
透過合成って透過する部分を予めAAを削って空白にしないといけないのか

149小さな名無しさん@この板は300レスまで:2011/08/30(火) 23:01:44 ID:zwkd3.Rg
おつです
前の合成パネルと合成フォルダは消していいんですよね?

150 ◆SPNXXX34sg:2011/08/30(火) 23:04:56 ID:pNGvNfRs
>>149
いいと思います
ただバグの可能性は捨て切れないです

151 ◆SPNXXX34sg:2011/08/30(火) 23:08:01 ID:pNGvNfRs
>>148
選択範囲を削るようにすることも出来なくはないですけど却って使い勝手が悪いと僕は思うので今のところ対応予定はないですね
事前に上絵を削るのに>>147の空白置換スクリプトが役立つと思いますよ

152小さな名無しさん@この板は300レスまで:2011/08/30(火) 23:08:47 ID:TbdPkHFA
>>150


すごいツールですね。ありがとうございます

でもできれば、コピペで構わないのでZIPファイルに使い方を同封してくれるとすごく助かります

153 ◆SPNXXX34sg:2011/08/30(火) 23:14:53 ID:pNGvNfRs
>>152
そのうちReadMe追加しておきます

154小さな名無しさん@この板は300レスまで:2011/08/30(火) 23:22:28 ID:zwkd3.Rg
>>150
了解です
とりあえず消してみて、バグが出るようだったらまた戻して見ます

155 ◆2MbZnrMECE:2011/08/31(水) 00:03:00 ID:hBa6RmtA
こりゃすげぇ、とうとう渡世AA人がただの部分切り出しツールになってしまったッ…!
乙でした!

156小さな名無しさん@この板は300レスまで:2011/08/31(水) 00:03:51 ID:I2TisU8c
 合成パネル使ってみたけど、何度やってもグチャグチャになるから何じゃらほい?とか思ってたら……

>>80を見落としてた。

 ドラッグした部分を転送するんじゃなくて、ページ全体を転送するんだね、コレ。
 何か勘違いしてた。
 で、上、下を転送した後に合成用の真っ新なページに移動して↑↓を押す、と。
 背景と吹き出し、効果音があるページで合成してたら、そらカオスになるわなwwwwワロスwwww

 有り難く使わせて頂きます。乙でした。

157 ◆SPNXXX34sg:2011/08/31(水) 00:21:55 ID:FyMKE1KM
切り出しも空白置換スクリプトで大分代用できると思うんですけどねー

158小さな名無しさん@この板は300レスまで:2011/08/31(水) 00:32:58 ID:tt2E8qBs
>>144
乙です

合成時のスペース調整に ゙ を使ってるみたいですけど、個人的には多少ズレてもいいから . とスペースのみにして欲しいかな。

159 ◆SPNXXX34sg:2011/08/31(水) 01:23:50 ID:FyMKE1KM
>>158
そこはたしかに好き嫌い出るところですね
ズレを許しちゃうと透過合成でドンドンズレが大きくなるおそれもありますし
オプションで選べるようにするのがベストでしょうけど

一応検討します

160小さな名無しさん@この板は300レスまで:2011/08/31(水) 01:47:03 ID:iMp9racw
おお、こりゃ凄い・・乙でした

161小さな名無しさん@この板は300レスまで:2011/08/31(水) 03:04:40 ID:dfwBkWnA
>>147を導入してみたけど、起動できない俺涙目

162 ◆SPNXXX34sg:2011/08/31(水) 03:13:53 ID:FyMKE1KM
>>161
起動できないというのはどういう状況でしょうか?

163 ◆SPNXXX34sg:2011/08/31(水) 22:50:16 ID:J3aKwArw
合成パネルスクリプト更新しました
以下のサイトから透過合成.zipをダウンロードして下さい
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo

導入方法は変更ありません

変更点
・テキストを選択状態で下絵、上絵転送を実行すると選択範囲を転送するように変更
(行単位での選択にしか対応していません)
・転送、合成の実行の確認のON、OFFをチェックボックスで選択可能に
・合成ボタンを押さなくても移動ボタンを押すだけで合成が実行される不具合を修正

164 ◆SPNXXX34sg:2011/08/31(水) 23:24:23 ID:J3aKwArw
>>163
すみませんちょっとミスがあったのでダウンロード待ってください

165 ◆SPNXXX34sg:2011/08/31(水) 23:28:27 ID:J3aKwArw
>>164
修正しました
ダウンロード可能です

166小さな名無しさん@この板は300レスまで:2011/09/01(木) 00:44:20 ID:jDit0hgs
>>162
おばぁ、即レスあったのに今気づいたすみません

えーと、合成フォルダ2をEdit.exeのあるフォルダに入れて、
合成パネル2.eppと透過.eppをScriptフォルダに入れてます。
うちの環境だとなぜかLibraryフォルダではスクリプトが認識されないので

で、合成パネル2を起動しようとしても動きません

167 ◆SPNXXX34sg:2011/09/01(木) 01:00:58 ID:mtFeruk6
>>166
Libraryフォルダで認識されない、ってのが疑わしいですね
Scriptフォルダに置いてる他のスクリプトは動いてますか?

168小さな名無しさん@この板は300レスまで:2011/09/01(木) 10:13:49 ID:jDit0hgs
>>167
それらは普通に動いてます、はい

で、今ふと思ってマウスの右クリメニューに入れてみた所、動きました
な、なぜだ……

169小さな名無しさん@この板は300レスまで:2011/09/01(木) 18:13:39 ID:zCitmuVM
>>163
大変便利なツールをありがとうございます。
こちら、知識不足で分からないことがありまして。

上絵を下絵に重ねようと↑をクリックして移動させていると、
「例外が発生しました。リストのインデックスが範囲を越えています(28) 強制終了しますか?」
とメッセージが出ます。
この時、「はい」「いいえ」いずれを選んでも繰り返し同じメッセージが表示されるので、
タスクマネージャーから強制終了している状況です。

この現象の原因といいますか、回避する方法があれば教えてください。

170 ◆SPNXXX34sg:2011/09/01(木) 18:26:26 ID:mtFeruk6
>>169
どんなAAでも同じエラーが出ますかね?
よかったらテストスレにでも上絵と下絵のAA貼っていただけると原因わかるかも知れないです
あとスクリプトがどのバージョンか分かれば教えて頂ければ幸いです
どこにもバージョン情報記載してないのでいつダウンロードしたかでしか判断できないですけども・・・

171小さな名無しさん@この板は300レスまで:2011/09/01(木) 19:15:19 ID:zCitmuVM
>>170
返信ありがとうございます。
所用で席を外してしまい、遅れてすみません。

バージョンは4で、ダウンロードしたのは本日の18時くらいです。
もしかすると自分の単純な操作ミスなのかも知れないですけど、
そうだったら大変すみません。


エラーが出たのは、
ttp://jbbs.livedoor.jp/bbs/read.cgi/otaku/12973/1314456748/382
こんな感じで上絵を上げて行って、下絵の杖のあたりまで移動した
時点ででます。
(テストスレに貼る前にもう一度やってみましたが、同じ状況でエラーがでました。

172 ◆SPNXXX34sg:2011/09/01(木) 19:46:44 ID:mtFeruk6
>>171
テストスレに貼ったAAって既にトリミングしてません?
これだと上絵は初期位置だと杖より上になる気がしますが・・・
よかったら実際に転送した上絵と下絵を一個ずつそのままの状態で貼ってください

173小さな名無しさん@この板は300レスまで:2011/09/01(木) 20:33:33 ID:zCitmuVM
>>172
やはり操作ミスなような気がしてきたんですが……。
一応、テストスレにそれぞれのAAは貼りました。


エラーが起きた時もこの状態からはじめてます。
実際やったことを書き出しますと、

1:(´д`)EditでHTMLファイルを開き
2:下絵を貼りつけ(この時すでに右にずらして貼ってます)
3:合成パネルを起動
4:下絵を選択して、下絵転送
5:上絵を下絵の下方に張りつけ
6:下絵を選択して、下絵転送
7:合成をクリック
8:上絵移動で↑をクリックしていくとエラー

という流れです。
多分ここにおかしいところがあるんじゃないでしょうか……アホですいません。

174小さな名無しさん@この板は300レスまで:2011/09/01(木) 20:53:54 ID:TfA9oPK.
合成スプリクトの上絵下絵の転送を選択するとiniが制作できませんってなって強制終了してしまうのだが、これは俺だけだろうか?

175 ◆SPNXXX34sg:2011/09/01(木) 20:56:48 ID:mtFeruk6
>>174
多分フォルダの場所が間違ってると思います
iniが制作できません、ってエラーにフォルダのパスが表示されてると思いますがちゃんとそこにフォルダが置かれてないのではないでしょうか

176 ◆SPNXXX34sg:2011/09/01(木) 21:02:02 ID:mtFeruk6
>>173
確認できました
確かにエラー出ますね
選択範囲転送にエラーがあるようです

申し訳ないですが現在使用されてる方も選択範囲転送は使用しないでください
修正したら報告します

177小さな名無しさん@この板は300レスまで:2011/09/01(木) 21:02:52 ID:TfA9oPK.
ありがとうございます。確認して置きなおしました。
間違えてScriptに入れてしまっていました。

178 ◆SPNXXX34sg:2011/09/01(木) 21:23:07 ID:mtFeruk6
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
透過合成.zip修正版アップしました
ご迷惑をおかけして申し訳ないです
すみませんが使用されてる方こちらのバージョンに更新をお願いします

179173:2011/09/02(金) 01:00:54 ID:/vZSkU6Q
>>178
あれ、すいません、レスを見落としてました! 何故か専ブラの更新が反映されかたったです……。
さっそく修正して使うことにします。対応ありがとうございました。

180 ◆2MbZnrMECE:2011/09/03(土) 21:37:08 ID:eXxGZuEk

(´д`)Editと同じウィンドウ内にフォームを表示する方法がわかったんで、
試しにこんなの作ってみました。


■スクリプトパネル

http://dl.dropbox.com/u/37791434/ScriptPanel.zip



▼概要

 (´д`)Editのメインウィンドウと一体化するスクリプトランチャー。


▼使い方

 スクリプトファイル本体をメモ帳等で開き、先頭のconst〜のところで各種設定を行なってください。
 内容はコメントに書いてある通りですが、いくつか補足を。

  ・ スクリプトフォルダのパスで設定したフォルダ内にある *.epp ファイルを読み込みます。
   Script直下に置いている場合は、「'Script\'」と設定してください。

  ・ パネルの下になったボタン等は押せなくなるので、パネルを配置するつもりの場所は
   あらかじめ空けておいてください。初期表示位置はメニューバーの「ヘルプ」のすぐ右横です。

  ・ 開くボタンは選択中のスクリプトファイルを(´д`)Edit他で開いて編集するためのボタンです。
   ほとんどの人は不要だと思うので、デフォルトで非表示にしています。


 [同梱ファイル]

  ・ ScriptPanel_Btn0.bmp → ボタンのアイコン画像です。スクリプトフォルダのパスで設定したのと
  ・ ScriptPanel_Btn1.bmp    同じ場所に置いてください。

  ・ OnCreate.epp → "Script" フォルダの中に "Events" フォルダを作って、そこにこのファイルを入れておくと、
                (´д`)Edit 起動時に自動で実行されます。(※既に "OnCreate.epp" が存在する場合は、
                "ScriptExecuteF〜" の行だけ"begin 〜 end." の間のどこかに加えてください)

  ・ OnScriptMenuUpdate.epp → 上記Eventsフォルダに入れると、メニューの「Scriptファイル読込」と連動して
                       リストが更新されるようになります。


                 !!!!! 注意 !!!!!

 このスクリプトを起動したまま(´д`)Editを終了すると、通常は終了時に記憶する設定
 (ウィンドウサイズやツールボタンの配置等、主に表示周りの設定)が記憶されません。
 記憶させたい場合は一度スクリプトを起動せずに設定を行い再起動してください。

181 ◆2MbZnrMECE:2011/09/03(土) 21:37:23 ID:eXxGZuEk

いつものようにソースコードもぺたり。

-------------------------------------------------------
const
ScrPath = 'Script\Library\'; //スクリプトフォルダのパス(exeのあるフォルダからの相対パス)
PanelLeft = 540; //パネルを配置するX座標(タイトルバーを除いたウィンドウ左上からの位置)
PanelTop = 0; //パネルを配置するY座標(同上)
OpnBtn = 0; //開くボタン表示の有無(0=非表示 1=表示)
StBar = 0; //パネルをステータスバーに配置(0=しない 1=する)

var
Bmp0, Bmp1 : TBitmap;
Form : TForm;
Panel : TPanel;
ComboBox : TComboBox;
BitBtn0, BitBtn1 : TBitBtn;
Fname : String;
I : Integer;


procedure ButtonExecuteScript( Sender : TObject );
begin
ScriptExecuteF( AppPath + ScrPath + ComboBox.Text + '.epp' );
end;

procedure ButtonOpenScript( Sender : TObject );
begin
FileOpenA( AppPath + ScrPath + ComboBox.Text + '.epp' );
// Exec( 'NOTEPAD', AppPath + ScrPath + ComboBox.Text + '.epp', 0 );
end;

procedure MainFormClose( Sender : TObject; var Action: TCloseAction );
var
Obj: TObject;
MnItm: TMenuItem;
S : String;
Str : TStrings;
begin
Action:= caFree;
Form.Close;

Obj:= Application.MainForm.FindComponent( 'menu_file_Recent' );
if Obj=nil then Exit;

MnItm:= TMenuItem(Obj);
for i:= 0 to MnItm.Count-1 do
begin
if MnItm.Items[i].Hint = '' then Break;
S:= S + MnItm.Items[i].Hint + #13#10;
end;

Str:= TStringList.Create;
Str.Add( TrimRight(S) );
Str.SaveToFile( AppPath + 'RecentFiles.txt' );
Str.Free;
end;

procedure MainformReSize( Sender : TObject );
begin
if StBar <> 0 then Form.Top:= Application.Mainform.Height - 48;
end;

182 ◆2MbZnrMECE:2011/09/03(土) 21:37:38 ID:eXxGZuEk

begin

for i:= 0 to Application.Mainform.ComponentCount-1 do
if Application.Mainform.Components[i].Name = 'ScriptPanel' then Exit;

Form:= TForm.Create( Application.Mainform );
Form.Parent:= Application.Mainform;
Form.Name:= 'ScriptPanel';
Form.Left:= PanelLeft;
if StBar = 0 then Form.Top:= PanelTop
else Form.Top:= Application.Mainform.Height - 48;
if OpnBtn = 0 then Form.Width:= 175
else Form.Width:= 200;
Form.Height:= 26;
Form.BorderStyle:= bsNone;

if StBar = 0 then
begin
Panel:= TPanel.Create( Form );
Panel.Parent:= Form;
Panel.Align:= alClient;
end;

ComboBox:= TComboBox.Create( Form );
if StBar = 0 then ComboBox.Parent:= Panel
else ComboBox.Parent:= Form;
ComboBox.Left:= 2;
ComboBox.Top:= 3;
ComboBox.Width:= 145;
ComboBox.Style:= csDropDownList;
Fname:= ChangeFileExt( FindFirst(AppPath + ScrPath + '*.epp', $0000003F), '' )
ComboBox.Items.Add( Fname );
while Fname <> '' do
begin
Fname:= FindNext;
If Fname = '' then break;
ComboBox.Items.Add( ChangeFileExt(Fname, '') );
end;
ComboBox.ItemIndex:= 0;
ComboBox.DropDownCount:= 16;

BitBtn0:= TBitBtn.Create( Form );
if StBar = 0 then BitBtn0.Parent:= Panel
else BitBtn0.Parent:= Form;
if StBar = 1 then BitBtn0.SetBounds( ComboBox.Left+148, 1, 23, 22 )
else BitBtn0.SetBounds( ComboBox.Left+148, 2, 23, 22 );
if FileExists ( AppPath + ScrPath +'ScriptPanel_Btn0.bmp' ) then
begin
Bmp0:= TBitmap.Create;
Bmp0.LoadFromFile( AppPath + ScrPath +'ScriptPanel_Btn0.bmp' );
BitBtn0.Glyph:= Bmp0;
Bmp0.Free;
end
else BitBtn0.Caption:= 'R';
BitBtn0.ShowHint:= true;
BitBtn0.Hint:= 'スクリプト実行';
BitBtn0.OnClick:= @ButtonExecuteScript;
BitBtn0.Default:= true;

if OpnBtn <> 0 then
begin
BitBtn1:= TBitBtn.Create( Form );
if StBar = 0 then BitBtn1.Parent:= Panel
else BitBtn1.Parent:= Form;
BitBtn1.SetBounds( BitBtn0.Left+23, BitBtn0.Top, BitBtn0.Width, BitBtn0.Height );
if FileExists ( AppPath + ScrPath +'ScriptPanel_Btn1.bmp' ) then
begin
Bmp1:= TBitmap.Create;
Bmp1.LoadFromFile( AppPath + ScrPath +'ScriptPanel_Btn1.bmp' );
BitBtn1.Glyph:= Bmp1;
Bmp1.Free;
end
else BitBtn1.Caption:= 'E';
BitBtn1.ShowHint:= true;
BitBtn1.Hint:= 'スクリプトファイルを開く';
BitBtn1.OnClick:= @ButtonOpenScript;
end;

Application.MainForm.OnClose:= @MainFormClose;
Application.Mainform.OnReSize:= @MainformReSize;

Form.Visible:= true;
while Form.Visible do Application.HandleMessage;

end.
-------------------------------------------------------

183 ◆2MbZnrMECE:2011/09/03(土) 21:37:53 ID:eXxGZuEk

(´д`)Edit終了時に設定が保存されない件ですが、どうもスクリプトから終了させると
通常の終了処理がされないっぽい?
ファイル履歴だけはムリヤリ記憶させるようにさせましたが、とりあえず現状はこれで
カンベンしてください。

あと、いつにもまして不具合がありそうな予感がするので、使用はくれぐれも
自己責任に基づいてお願いします。

184小さな名無しさん@この板は300レスまで:2011/09/03(土) 23:14:19 ID:Mr1LiI6Y
面白いね、コレ。
設置場所を開けとくのがちょっと面倒だけど、右クリ、キー設定なしに手軽にスクリプトが使えて、さらに編集できるのが地味に便利。
コレ他にも色々使えそうだよね。
乙。

185 ◆SPNXXX34sg:2011/09/04(日) 19:09:02 ID:nyRaPr0k
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
トーンスクリプトセットです
以前ここで公開した「: : 」トーンスクリプト、「::::」トーンスクリプトを修正し、「:..:.:.」トーンスクリプトを追加したセットです

使い方
編集画面のAAを一行だけ範囲選択して実行するとそこにズレが出ないようにトーンを当てます
同封のReadMeでもうちょっとだけ詳しく説明してます

186小さな名無しさん@この板は300レスまで:2011/09/05(月) 01:30:20 ID:Dj3XnWbM
乙です

改造すれば同じドット数のトーンも使えそうですね

187小さな名無しさん@この板は300レスまで:2011/09/05(月) 08:44:37 ID:urGviViI
>>183
ちょっと気になったんですが、OnCreate.eppからScriptPanel.eppを呼び出すと、
(´д`)Edit自体が終了するまでOnCreate.eppへ処理が戻って来てないっぽいです。
仕様だとすると、他の起動処理はScriptPanel.eppの呼び出し以前に行う必要がありますね。

188 ◆SPNXXX34sg:2011/09/05(月) 19:49:14 ID:RizO1P9M
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
合成パネルスクリプトを更新しました
合成パネル.zipをダウンロードして下さい(旧バージョンから名前を変えました)

主な変更点
ReadMeの追加
リセットボタンの追加
ポップアップヒント追加
その他細かいバグ修正

189 ◆2MbZnrMECE:2011/09/05(月) 22:15:32 ID:iVU/RWMY
>>187
ホントだ…
フォームのあるスクリプトを別のスクリプトから起動すると、フォームを閉じるまで
起動元のスクリプトの処理が止まっちゃうみたいですね。
とりあえず対処法としては仰る通り "ScriptExecuteF〜" の行を "end."の直前に置けば大丈夫です。

しかしこれじゃ(´д`)Editと一体化するタイプのが複数同時に起動できないな。
しかも対処法がサッパリ分からないと来たぐぬぬ…。
起動の度いちいち手動で表示させるのも面倒だし、そもそもそれだと一体化させる
メリットが薄れるしなー。うーん、どうしよ……。

190小さな名無しさん@この板は300レスまで:2011/09/06(火) 01:17:34 ID:oxXgQtjw
>>189
ScriptExecuteF関数で呼ぶのが拙いようであれば、
ScriptPanel.eppの実行部を関数化してepuファイルに切り替えて、
INCLUDE宣言でOnCreate.eppに取り込んでしまって
関数として実行してやる事で解消できたりしないですかね?
ttp://edittips.oh.land.to/tips/e3script/new002.html

191 ◆2MbZnrMECE:2011/09/06(火) 21:52:33 ID:vL7Cr/Zc
>>190の方法でもダメっぽいですね。
他になんか方法ないか調べてみます。

192小さな名無しさん@この板は300レスまで:2011/09/06(火) 22:29:04 ID:KjFdp/DA
スクリプトパネルのソースを拝見したんですが、
起動イベント( OnCreate )とハンドルされた処理の中で
別種のイベント待ち( while Form.Visible do Application.HandleMessage )を行ってるのが原因だと思います。
これだとエディタを終了させるまで起動イベントが終わらないというイミフな状態になってしまいますし。

思うに、Execみたいに別個のプロセスとしてスクリプトを実行する手段でもない限り、
開始イベントでランチャーを生成するの非常に厳しいんじゃないでしょうか。

193 ◆2MbZnrMECE:2011/09/06(火) 23:24:48 ID:vL7Cr/Zc
むぅ…そうですか。
しょうがないんで今まで通り手動で起動してもらう形にします。
アドバアスありがとうございました。


ぼくのかんがえたさいきょうの(´д`)Editができると思ってうはwwww夢がひろがりんぐwwww
だったのに残念…。

194192:2011/09/07(水) 00:29:35 ID:MJoQ3bR6
暫くスクリプトパネルのソースをいじってみたんですが、
てっきり while Form.Visible do Application.HandleMessage; は
ScriptPanel.epp の終了をブロックしてフォームの破棄を避ける意図なのかと思ったら、
該当行をコメントアウトしてもフォームはそのまま残り続けますね……

となると、フォーム内のイベントにハンドルされてあるプロシージャが
起動イベント( OnCreate )が終了した後でもちゃんと動くなら問題ないのかな?
インスタンスがどう扱われているのか確認しないと何とも言えませんが。

あと、OnDestroy.epp で Form.Free によるフォームの破棄を明示的に行う必要があると思います。

195小さな名無しさん@この板は300レスまで:2011/09/07(水) 00:59:52 ID:MJoQ3bR6
まとめ

①while Form.Visible do Application.HandleMessage; はバッサリ削除した方が無難。
  ただし、 ScriptPanel.epp に含まれるプロシージャがフォーム内のイベントにハンドルできなくなる可能性がある。
  その場合、クラスを自作してメソッドとして該当のプロシージャを放り込み、 OnCreate.epp でインスタンスを生成すれば解消可能かも。

②OnDestroy.epp でランチャーとして生成したフォームの破棄( Form.Free )を行うことが望ましい。
  ただ、直接記述してもスクリプトのコンパイルでコケる可能性が高いので、
  変数や定数、フォーム等のオブジェクトの宣言をepuファイルにまとめてやり、
  INCLUDE宣言でそれぞれ必要となるファイルに引き込んでやる必要が生じると思われる。

ここらへんをクリアしていけばランチャーの実現も可能なんでないかなと。

196 ◆SPNXXX34sg:2011/09/07(水) 17:57:17 ID:FNc/rdzk
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
合成パネルスクリプトを更新しました
合成パネル.zipをダウンロードして下さい

主な変更点
矩形選択範囲を透過可能に

197 ◆SPNXXX34sg:2011/09/07(水) 17:57:52 ID:FNc/rdzk
実例
下絵に以下のAAを転送し
                  ___>` ー---|`ー -- 、
                ,ィ´ ァ:.: : : : : : : :.:.:.:|: : : : : : : \
               / / : /:.: /: :.,イ: :./|:.!: \: .: : : : :<⌒ヽ
                /:/: :/: :./___/ !: / .|:.|l: .:__ヽ: :.\:.:ヽ\ \
                /イ: :/: :./´:./` |/  |:.||ヽ: :`ヽ: : :.ヽ: :} \{
                 /: :.': :.:i: :./  |   Ⅵ  \: :|: : : :.∨ /
                ': : { : : |:./ ,_        _, ヽ!:.:: :.|:.:|ィ´
                |: :/|: : :|イ ィ=ミ    ィ=ミ } : : ト、!:|
                |;イ: ! :./`|           ム : : |:/: |
                  |:|.:V:l`ri^ixx  、__,   xxrvィヘ : |: : :|
                  |:|: : :l: :〉、`ー-、 .___ ,.-‐' /:.:.:V: : : |
                  |:|: : :l:/ `ァ  〉r‐┤  r‐':./}:!: : : :|
                  |:|: : :l{.  /   /:.:l ./|   |: :/  |:l:.:. :.:.|
                  |:|: : :l| /   ∧:.:|/:.l  |:/  .!:l: : :.:.|
上絵に以下のAAを転送し
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
    二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二
合成を行うと以下のようになります
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|
           ||                     | :|..゙:<⌒ヽ
           ||                     | :| :.:ヽ\ \
           ||                     | :|゙:.ヽ: :} \{
           ||                     | :|..゙: :.∨ /
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||                     | :|..゙: ト、!:|
           ||                     | :|...: |:/: |
           ||                     | :|...: |: : :|
           ||                     | :|.:V: : : |
           ||                     | :|..:!: : : :|
           ||                     | :| :l:.:. :.:.|
    二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二

198 ◆SPNXXX34sg:2011/09/07(水) 18:02:46 ID:FNc/rdzk
ここで以下の画像のように空白域を矩形選択した上で透過ボタンを押すと
ttp://a-draw.com/src/a-draw_5731.png
こうなります
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||                     | :|
           ||                     | :|
           ||.      ___>` ー---|`ー -- . | :|
           ||.    ,ィ´ ァ:.: : : : : : : :.:.:.:|: : : : : : :| :|
           ||....../ / : /:.: /: :.,イ: :./|:.!: \: .:.| :|..゙:<⌒ヽ
           ||.    /:/: :/: :./___/ !: / .|:.|l: .:__ヽ:| :| :.:ヽ\ \
           ||...... /イ: :/: :./´:./` |/  |:.||ヽ: :`. | :|゙:.ヽ: :} \{
           ||....  /: :.': :.:i: :./  |   Ⅵ  \ | :|..゙: :.∨ /
           |仁.二二二二二二二二二二二二| :|二二二二二二二二二二
           ||...... |: :/|: : :|イ ィ=ミ    ィ=ミ| :|..゙: ト、!:|
           ||...... |;イ: ! :./`|            | :|...: |:/: |
           ||..   |:|.:V:l`ri^ixx  、__,   xxr | :|...: |: : :|
           ||..   |:|: : :l: :〉、`ー-、 .___ ,.-‐'....| :|.:V: : : |
           ||..   |:|: : :l:/ `ァ  〉r‐┤  r‐'゙| :|..:!: : : :|
           ||..   |:|: : :l{.  /   /:.:l ./|   |: :.゙| :| :l:.:. :.:.|
    二二二二二二二二二二二二二二二二二二二二二二二二二二二二二二

199 ◆SPNXXX34sg:2011/09/07(水) 18:46:01 ID:FNc/rdzk
すいませんサイトのスクリプト更新してませんでした
今更新しましたw

200小さな名無しさん@この板は300レスまで:2011/09/07(水) 19:00:37 ID:5eyfnCCA
乙です

透過の仕方がよく分からなかったんだよね
これでかつる!

201小さな名無しさん@この板は300レスまで:2011/09/07(水) 21:50:48 ID:34n6cvNk


透過が格段と使いやすくなってる
今回は十数秒でできたこれはいい

202小さな名無しさん@この板は300レスまで:2011/09/08(木) 00:17:58 ID:EWcCGouE
>>199
合成ボタンを押した直後だけパネルの「上絵移動」のキャプションが「下絵移動」に化けます
上絵移動すると治るけど

203 ◆SPNXXX34sg:2011/09/08(木) 00:25:54 ID:DXaCwJno
>>202
ご指摘ありがとうございます
修正しました
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo

204 ◆SPNXXX34sg:2011/09/12(月) 16:25:55 ID:Qf7HswIE
空白置換スクリプトを更新しました
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
矩形選択に対応しました
要はこのように選択すると↓
ttp://dl7.getuploader.com/g/10|yaruo/1891/before.png
こんな感じにくり抜きます
ttp://dl7.getuploader.com/g/10|yaruo/1892/after.png

便利だよ

205小さな名無しさん@この板は300レスまで:2011/09/12(月) 17:49:45 ID:o0NZGnn.
これは楽チン

206 ◆SPNXXX34sg:2011/09/13(火) 00:22:45 ID:zEOPx8qM
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
トーンスクリプトセットを更新しました

変更点
スラッシュトーン.eppを追加しました
矩形選択に対応しました(空白置換スクリプトの使用感に近いです)

詳細はReadMeに

207小さな名無しさん@この板は300レスまで:2011/09/13(火) 02:00:36 ID:Kr6kLYs6
これは便利
いろいろ塗りつぶしたくなってくるw


              /:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:. : \
            Ⅹ:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:._.。ャぁて丕刀フ7ゎ。._ :.:.:.:.:.:.:.:.:.:.:.:.:. ヽ
          Ⅸ:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.,.ィ炙ヲ㌍≠////弍j込ス>。. :.:.:.:.:.:.:.:.:.:.:.Ⅹ
            /:.:.:.:.:.:.:.:.:.:.:.:.:.:.:,ィ升ヲナ'´////////// `゙'<弖心、 :.:.:.:.:.:.:. : :Ⅸ
         ∧:.:.:.:.:.:.:.:.:.:.:.:.゙;夕フア´,'/////____.////,'\ホi心.゙:.:.:.:.:.:.:.:.:. : Ⅵ
        ,′:.:.:.:.:.:.:.:.:.:.:. んfiУ///////      \..゙////▽ij∧ :.:.:.:.:.:.:.:.:.:.:Ⅶ
.         φ:.:.:.:.:.:.:.:.:.:.:.:.:.从j'Y///// / ─    ─ \ /// ∨iハ:.:.:.:.:.:.:.:.:.:.: Ⅷ
        i:.:.:.:.:.:.:.:.:.:.:.:.:. 斤W,'///../   (●)  (●)  \ //,'㌣い:.:.:.:.:.:.:.:. : :キ
        |:.:.:.:.:.:.:.:.:.:.:.:.:.:|友カ'///.゙|      (__人__)     |..゙//,}ソ川.゙:.:.:.:.:.:.:.:.:.:.:|
        l:.:.:.:.:.:.:.:.:.:.:.:.:. い叭'///..\     `⌒´    ,/..//,'仄ガ:.:.:.:.:.:.:.:.:. : :l
.        キ:.:.:.:.:.:.:.:.:.:.:.:.:.:Wi从'////     ー‐    \゙//,从ノリ. :.:.:.:.:.:.:.:. : :i
.         Ⅷ:.:.:.:.:.:.:.:.:.:.:.:.:∀t△////////////////////// ∧fリ/ :.:.:.:.:.:.:.:.:.:.:.√
        Ⅶ:.:.:.:.:.:.:.:.:.:.:.:.:゙゙マじへ、,'////////////////,',/リiУ. :.:.:.:.:.:.:.:.:.:. ,'
.           Ⅵ:.:.:.:.:.:.:.:.:.:.:.:.:.:.\夊i㌧、_//////////// ,.イ!刋/.:.:.:.:.:.:.:.:.:. : :∨
         Ⅸ:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.`マ才i「≧ェ。'///,'。っ夭テ少'゚. :.:.:.:.:.:.:.:.:.:. : Ⅸ
          Ⅹ:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:. `゚'' ミ芝玉竺壬云=‐'´゙:.:.:.:.:.:.:.:.:.:.:.:.:.:.: Ⅹ
            ヽ:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:. ̄. :.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.≠

208 ◆SPNXXX34sg:2011/09/16(金) 04:41:02 ID:GzmXXlsY
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
置換.epp

編集画面の空白域全てを入力した文字列で置換します

使用例)

,x幺主圭歪≫''¨”´ ,xif斧lll圭圭才''"´ゴメンナ. 刈圭狄ア㌢ゴメンナサイゴメンナ.゙'守|会ュゴメン. '守圭圭圭圭ゴメ. |
丞圭亥7才´ゴ...,.x幺lllll圭才"´ゴメンナサイゴメ.゙,炸I圭jⅣ´ゴメンナサイゴメンナサイ `Ⅵ|丞ゴメン. `Ⅵ圭圭圭|ゴメ.゙|
圭歪j㌢´ゴ...,x幺llll圭才´ゴメンナサイゴメンナサイ焔圭:Ⅳゴメンナサイゴメンナサイゴメンナ゙Ⅵ|伐ゴメンナ...Ⅵ圭圭||ゴメン|
圭jアゴメン.,ィ劣圭才´ゴメンナサイゴメンナサイゴ...以圭Ⅳゴメンナサイゴメンナサイゴメンナサ Ⅵ|伐ゴメンナ. Ⅵ圭圭ゴメ. |
j炒′ゴ.,ィ劣l才´ゴメンナサイゴメンナサイゴメンナ . 込i:圭{ゴメンナサイゴメンナサイゴメンナサイコ Ⅵi伐ゴメンナ. Ⅵ圭llゴメン|
Ⅳゴメ../{}{ア´ゴメンナサイゴメンナサイゴメンナサイゴⅥ7:刈ゴメンナサイゴメンナサイゴメンナサイゴメ゙Ⅵiiヘゴメンナ. Ⅵ圭ゴメ |
/ゴメ../㌢´ゴメンナサイゴメンナサイゴメンナサイゴメン. ゙'廷i代ゴメンナサイゴメンナサイゴメンナサイゴメ.||圭]ゴメンナサ.||圭ゴメ..|
ゴメ ll/ゴメンナサイゴメンナサイゴメンナサイゴメンナサイ. `'冬淤t、ゴメンナサイゴメンナサイゴメンナサ. ||洲リゴメンナサ.||洲ゴメ.|
ゴメ lllゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメン...》i淤〉ゴメンナサイゴメンナサイゴメンナサ.為Ⅳゴメンナサ. Ⅶllゴメ.|
ゴメ {{ゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメン.゙ヘ㌢ゴメンナサイゴメンナサイゴメンナサイ'為ソゴメンナサイゴ゙Ⅶゴ...|
ゴメン.ヘ_ゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメンナサ/アゴメンナサイゴメ ヘゴ..゙|
ゴメンナ...[ftゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメ. 〃ゴメンナサイゴメンナサイゴ゙|
ゴメンナザΝkゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴ..Kゴメンナサイゴメンナサイゴメンナ 7ゴメンナサイゴメンナサイゴメ |
ゴメンナサイ !垈ゴメンナサイゴメンナサイゴメンナサイゴメンナサイコ }代ゴメンナサイゴメンナサイゴ..゙ノゴメンナサイゴメンナサイゴメン.|
ゴメンナサ.゙為llll}ゴメンナサイゴメンナサイゴメンナサイゴメンナサ 為lll心ゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメンナ . |
ゴメンナ.゙ィ圭洲;ゴメンナサイゴメンナサイゴメンナサイゴメンナ . /淤l圭l丞ゴメンナサイゴメンナサイゴメンナサイゴメンナサイゴメン....|
ゴメ..,ィ劣圭:㌢ゴメンナサイゴメンナサイLゴメンナサイゴメン.゙/淤圭圭IIII)ゴメンナサイゴメン...λゴメンナサイゴメンナサイゴメン...|
ゴ.,ィ劣斧アゴメンナサイゴメンナサイゴ..[代ゴメンナサイゴ...,攷圭斧:㌢´ゴメンナサイゴメンナ゙{会ュ。ゴメンナサイゴメンナサイゴ..|
f,/淤圭Ⅳゴメンナサイゴメンナサイゴ..゙Ⅵ心ゴメンナサイ 刈圭?[アゴメンナサイゴメンナサイコ `''寺ll≧ュ。ゴメンナサイゴメンナ. |
/淤圭Ⅳゴメンナサイゴメンナサイゴメン Ⅵ7ゴメンナサイ炸淤jⅣゴメンナサイゴメンナサイゴメンナ゙為圭圭丞ゴメンナサイゴメ..゙|
圭丞Ⅳゴメンナサイゴメンナサイゴメンナ . 7ゴメンナサイ゙Ⅵ7:Ⅳゴメンナサイゴメンナサイゴメンナ. 為圭圭圭丞ゴメンナサイゴ...|
圭i:洲{ゴメンナサイゴメンナサイゴメンナサイゴメンナサイ 以Ⅳゴメンナサイゴメンナサイゴメンナ....,炸,圭l圭l圭l丞ゴメンナサイコ |
圭i:刈ゴメンナサイゴメンナサイゴメンナサイ.゙[ゴメンナサイ Ⅵ7ゴメンナサイゴメンナサイゴメンナ....,炸圭圭l圭圭刻ゴメンナサイゴ|

209小さな名無しさん@この板は300レスまで:2011/09/16(金) 10:31:39 ID:3WvttUFc
ひええ

210 ◆WzxNyO0VrA:2011/09/18(日) 05:41:39 ID:n.bTRuWU
どうも、まとめZIPの編集を行っている◆WzxNyO0VrAです。
◆2MbZnrMECEさんにお伺いしたいことがあります。

ttp://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1307817465/17

このスクリプトをeppファイルにした上で許可が貰えればやる夫AA録2から、
ダメならばどこかからダウンロードできるようしたいのですがよろしいでしょうか。

理由は『 MLTの編集の方法と注意』を改訂する際に上記のスクリプトの使用を推奨したいのですが、
予めファイルを用意していた方が導入しやすいと思うからです。

211 ◆2MbZnrMECE:2011/09/18(日) 15:03:05 ID:FsOP9zEo
>>210
いつもまとめお疲れ様です。
ファイル化も置く場所もご自由にして頂いて結構ですよ。

というか今見返してみたら、コードにすごい無駄が多くてハズカチー!
ちょっと改良してみたんで、できればこちらをお使いください。
やってることは同じですが、無駄を省いて多少はスリム化しています。

http://dl.dropbox.com/u/37791434/DelEndSpAndTrim.epp



-------------------------------------------------------
var
S : String;
I : Integer;

begin
if not IsStory then
begin
ActionExecuteOfString( 'edit2DelEndSpace' );
S:= EditorText;
S:= TrimRight( S );
S:= TrimLeft( S );
EditorSetText ( S );
Exit;
end;

for i:= 0 to PageCount-1 do
begin
S:= PageText( i ) + #13#10;
if Pos( ' ' + #13, S ) + Pos( ' ' + #13, S ) <> 0 then
begin
repeat
S:= ReplaseStr( S, ' ' + #13, #13 );
S:= ReplaseStr( S, ' ' + #13, #13 );
until Pos( ' ' + #13, S ) + Pos( ' ' + #13, S ) = 0;
end;
S:= TrimRight( S );
S:= TrimLeft( S );
SetPageText( i, S );
end;
end.
-------------------------------------------------------

212 ◆WzxNyO0VrA:2011/09/19(月) 03:54:56 ID:0oT3pzCc
>>211
改良までしていただきありがとうございます。
それではありがたく使わせて頂きます。

213小さな名無しさん@この板は300レスまで:2011/09/19(月) 23:40:40 ID:qJZYKMVQ
いつもこのスレにはお世話になっています。
すみませんが、合成パネルと透過合成の違いというのは何なんでしょうか?

214 ◆SPNXXX34sg:2011/09/19(月) 23:59:05 ID:v1zCMKy6
>>213
バージョン更新に伴って名前を変えただけなので
単に透過合成.zipは旧バージョンになります

215小さな名無しさん@この板は300レスまで:2011/09/20(火) 00:07:56 ID:4zeeru0Y
あ、なるほど。ありがとうございます。

216 ◆SPNXXX34sg:2011/09/22(木) 08:10:16 ID:0aTe2JEQ
>>134

> ついでに以前言ってた、フォームを閉じないと(´д`)Editが終了できない問題の
> 修正方法が分かったので、それにも対策を施しました。

よかったら方法教えてもらえませんか?

217小さな名無しさん@この板は300レスまで:2011/09/22(木) 21:33:31 ID:eyjgqVG2
横レス失礼します

>>216
ttp://loda.jp/yaruogazou/?id=2287.zip

無断で恐縮ですが
試しに「合成パネル.epp」に変更を施してみました
確認してみて下さい

以上です
失礼いたしました

218 ◆SPNXXX34sg:2011/09/22(木) 21:38:53 ID:0aTe2JEQ
>>217
わざわざ実例まで示していただきありがとうございます
次の修正版で使わせていただきます

219 ◆SPNXXX34sg:2011/09/22(木) 22:42:53 ID:0aTe2JEQ
トーンパネルスクリプト作りました
サイトからトーンパネル.zipをダウンロードして解凍し
中のReadme.txtに従って導入、使用してください

機能
このスクリプトは既にここで公開させていただいた、
トーンスクリプトセット、空白置換スクリプト、置換スクリプトの完全上位互換スクリプトです
トーンパネル.eppを実行すると↓のようなパネルが起動します
ttp://a-draw.com/src/a-draw_6203.png
使用するトーンを選択しオプションを設定して実行ボタンを押すとトーンを貼ります

使用例
1.「: : : : : 」トーン
ttp://a-draw.com/src/a-draw_6205.png
実行↓
ttp://a-draw.com/src/a-draw_6206.png

2.切り抜き
ttp://a-draw.com/src/a-draw_6207.png
実行↓
ttp://a-draw.com/src/a-draw_6208.png

3,置換
ttp://a-draw.com/src/a-draw_6209.png
実行↓
ttp://a-draw.com/src/a-draw_6210.png

詳しい使い方はReadmeの方で

220 ◆2MbZnrMECE:2011/09/22(木) 22:59:16 ID:R.wXf0Io
>>216
それは分かったと思ったら気のせいですた。

フォーム表示中に(´д`)Editを終了した場合はちゃんと一緒に終了してくれるんですが、
フォームを一度起動した後閉じてから(´д`)Editを終了した場合はエラーになって、
どうにも上手くいかずに悩み中なのです。

221小さな名無しさん@この板は300レスまで:2011/09/22(木) 23:23:58 ID:NayCN6vQ
トーンなんて普通に(´д`)Editの機能でええやんと思ったら存外便利そうワロタ

222小さな名無しさん@この板は300レスまで:2011/09/22(木) 23:55:18 ID:2XZGboXY
考え無しにトーン入れて微妙に直線がずれた時って調節しなおすの案外面倒臭いからね。

223 ◆SPNXXX34sg:2011/09/23(金) 02:41:35 ID:HpWkGCRw
>>220
了解です
>>217でも同様のようですね

224小さな名無しさん@この板は300レスまで:2011/09/25(日) 22:22:51 ID:VWCAqocI
lM0)ジー

225小さな名無しさん@この板は300レスまで:2011/09/25(日) 22:23:13 ID:VWCAqocI
誤爆です

226小さな名無しさん@この板は300レスまで:2011/10/05(水) 22:14:07 ID:8PGbejdI
合成パネルをバリバリ活用していたのですが、
昨日から突然エラーが連発する様になり困っています。

・上絵転送、下絵転送を押すと「iniファイルを作成出来ません in 0 at XXXX(数字)」とエラーが出る
 (パスは間違っていない、iniファイルを開くとAAは転送されているが途中でエラーが起こっているっぽい)

・リセットボタンを押しても同様のエラーが「たまに」起こる
 エラー内容は「Out of Grobal Vars range in 0 at XXXX(数字)」と出る

・たまに正常に動いたと思ったら、透過合成でも上記と同様のエラーが発生した

・何度か合成パネルを1から設定しなおしたが同様の現象が起こる
 (PC側の原因の可能性あり?OSはWindows7 Home SP1です)

ログを一通り見てそれっぽい報告がなかったので書きましたが、既出だったらすみません。

227 ◆SPNXXX34sg:2011/10/06(木) 00:27:10 ID:O/6DqSd6
>>226
とりあえずバージョン情報を教えて下さい
ReadMeか合成パネル.eppの一行目に書いてあります
いったんINIファイルの内容を全削除してみてください
望み薄ですが
他の何かと干渉してるとしたら僕の知識では対処法はわからないかも・・・

228小さな名無しさん@この板は300レスまで:2011/10/06(木) 08:19:00 ID:ToysT9Gw
>>227
ReadMeの方にはVersion 1.081
合成.eppの方にはVer.1.05と書かれています

iniファイルの中身を全削除したり、
別の場所に置いてから試行しましたが結果は変わりませんでした。

エラーが発生しても転送を粘り強く繰り返していると、
その内転送が正常に行えるみたいです。

229 ◆SPNXXX34sg:2011/10/06(木) 23:48:38 ID:O/6DqSd6
すみません、ちょっとわからないです
転送するAAによってエラーが出るかでないか変わるならスクリプトの問題でしょうが
そうじゃないなら外部との兼ね合いでしょうからちょっと僕には対処法はわからないです・・・

230小さな名無しさん@この板は300レスまで:2011/10/07(金) 20:19:28 ID:vqSOGSeM
>>230
Editはずっとデスクトップに置いていたのですが、
試しにCドライブ直下に移動したところ、どういう訳か現象が発生しなくなりました。
結局原因は判らず終いですが、ロケーションに問題があったのかも知れません。

自己解決と言う形になり申し訳ありません。
貴重な時間を割いて頂き、有難うございました。今後も合成パネルを有り難く活用させて頂きます。

231小さな名無しさん@この板は300レスまで:2011/10/07(金) 20:19:54 ID:vqSOGSeM
安価ミス
>>229

232 ◆2MbZnrMECE:2011/10/08(土) 10:36:56 ID:KepI4dBc

■枠/フキダシ入力ボタン

 枠線やフキダシを入力するツールボタンを(´д`)Edit上に追加するスクリプト。
 複数行ある枠パーツにも対応。詳細は後でupする添付のReadmeを参照。

-------------------------------------------------------
{$INCLUDE $S\Library\Spacer.epu}

function MakeVerticalFrame( S0, S1 : String; LCnt : Integer ) : String;
var
I, I0 : Integer;
SL0, SL1 : TStringList;
begin
if S1 = '' then S1:= #13#10;
SL0:= TStringList.Create;
SL1:= TStringList.Create;
try
SL0.SetText( S0 );
SL1.SetText( S1 );
while LCnt > SL0.Count do
begin
if (i0 = 0) and (Odd(SL0.Count) = true) then begin i0:= SL0.Count/2 + 1; SL0.Insert( i0, SL1.Strings[0] ); end
else if (i0 = 0) and (Odd(SL0.Count) = false) then begin i0:= SL0.Count/2; SL0.Insert( i0, SL1.Strings[0] ); end
else SL0.Insert( i0, SL1.Strings[i] );
i0:= i0 + 1;
i:= i + 1;
if i = SL1.Count then i:= 0;
end;
Result:= SL0.Text;
finally
SL0.free;
SL1.free;
end;
end;


function MakeHorizontalFrame( S0, S1, S2 : String; AddTxtWdth : Integer; RLessChk : Boolean ) : String;
var
I, Cnt, MxTxtWdth, TxtWdth : Integer;
SL0, SL1, SL2 : TStringList;
begin

if S1 = '' then begin Result:= S0; Exit; end;

if RLessChk = true then
begin
SL0:= TStringList.Create;
SL1:= TStringList.Create;
SL2:= TStringList.Create;
try
SL0.SetText( S0 );
SL1.SetText( S1 );
SL2.SetText( S2 );
while SL0.Count < SL1.Count do SL0.Add( '' );
while SL0.Count > SL1.Count do SL1.Add( '' );
while SL0.Count > SL2.Count do SL2.Add( '' );
for i:= 0 to SL0.Count - 1 do
if GetTextWidth( SL0.Strings[i] + SL2.Strings[i] ) > MxTxtWdth then MxTxtWdth:= GetTextWidth( SL0.Strings[i] + SL2.Strings[i] );
if MxTxtWdth >= AddTxtWdth then begin Result:= SL0.Text; Exit; end;
while MxTxtWdth < AddTxtWdth do
begin
for i:= 0 to SL0.Count - 1 do
begin
SL0.Strings[i]:= SL0.Strings[i] + SL1.Strings[i];
if GetTextWidth( SL0.Strings[i] + SL2.Strings[i] ) > MxTxtWdth then MxTxtWdth:= GetTextWidth( SL0.Strings[i] + SL2.Strings[i] );
end;
if MxTxtWdth >= AddTxtWdth then Break;
end;
Result:= SL0.Text;
finally
SL0.free;
SL1.free;
SL2.free;
end;
end

else if RLessChk = false then
begin
SL0:= TStringList.Create;
SL1:= TStringList.Create;
try
SL0.SetText( S0 );
SL1.SetText( S1 );
while SL0.Count < SL1.Count do SL0.Add( '' );
while SL0.Count > SL1.Count do SL1.Add( '' );

for i:= 0 to SL1.Count - 1 do
if GetTextWidth( SL1.Strings[i] ) > MxTxtWdth then MxTxtWdth:= GetTextWidth( SL1.Strings[i] );
if MxTxtWdth > 0 then
begin
Cnt:= 1;
repeat
for i:= 0 to SL0.Count - 1 do SL0.Strings[i]:= SL0.Strings[i] + SL1.Strings[i];
TxtWdth:= MxTxtWdth * Cnt;
Cnt:= Cnt + 1;
until TxtWdth >= AddTxtWdth;
end;

233 ◆2MbZnrMECE:2011/10/08(土) 10:37:16 ID:KepI4dBc

Result:= SL0.Text;
finally
SL0.free;
SL1.free;
end;
end;

end;


function DockingFramePatrs( S0, S1 : String ) : String;
var
I : Integer;
SL0, SL1 : TStringList;
begin
SL0:= TStringList.Create;
SL1:= TStringList.Create;
try
SL0.SetText( S0 );
SL1.SetText( S1 );
while SL0.Count < SL1.Count do SL0.Add( '' );
while SL0.Count > SL1.Count do SL1.Add( '' );
for i:= 0 to SL0.Count-1 do SL0.Strings[i]:= SL0.Strings[i] + SL1.Strings[i];
Result:= SL0.Text;
finally
SL0.free;
SL1.free;
end;
end;




var
Form : TForm;
SpdBtn : TSpeedButton;
PopupMenu : TPopupMenu;
MenuItem : array of TMenuItem;
Bmp : TBitmap;
S, FName : String;
I, BtnLeft, BtnTop, LastMenuItem : Integer;


procedure SpdButtonClick( Sender : TObject );
var
S, S0, S1, S2, STmp, FName, Sp : String;
FParts : array[0..9] of String;
SL : array[0..9] of TStringList;
I, RightSpace, Spacer, StPosY, EdPosY, LCnt, MxTxtWdth, TxtWdth, SpWdth, AddTxtWdth : Integer;
RLessChk : Boolean;

begin

for i:= 0 to GetArrayLength( MenuItem ) - 1 do
if MenuItem[i].Checked = true then FName:= MenuItem[i].Hint;
RightSpace:= IniReadInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'RightSpace', 22 );
Spacer:= IniReadInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'Spacer', 1 );
FName:= AppPath + 'FrameAA\' + FName;
if not FileExists ( FName ) then begin MessageBox( FName + ' が見つかりません', 'ERROR', MB_OK ); Exit; end;

if Selecting then
begin
StPosY:= SelStartY;
EdPosY:= SelEndY;
if SelEndX = 0 then EdPosY:= EdPosY - 1;
LCnt:= EdPosY - StPosY + 1;
SetSelecting( false );
end
else
begin
StPosY:= 0;
EdPosY:= LineCount - 1;
LCnt:= LineCount;
end;

SL[0]:= TStringList.Create;
try
SL[0].LoadFromFile( FName );
for i:= 0 to SL[0].Count - 1 do
begin
FParts[i]:= SL[0].Strings[i];
FParts[i]:= ReplaseStr( FParts[i], #1#1, #13#10 )
Delete( FParts[i], Pos(#2#2, FParts[i]), Length(FParts[i]) );
end;
finally
SL[0].free;
end;

for i:= 0 to 9 do SL[i]:= TStringList.Create;
try
for i:= 0 to 9 do SL[i].SetText( FParts[i] );

SL[4].Text:= MakeVerticalFrame( SL[4].Text, SL[8].Text, LCnt );
SL[5].Text:= MakeVerticalFrame( SL[5].Text, SL[9].Text, LCnt );

234 ◆2MbZnrMECE:2011/10/08(土) 10:37:36 ID:KepI4dBc

for i:= 0 to SL[5].Count-1 do
begin
S:= SL[5].Strings[i];
while ( Pos(' ', S) = 1 ) or ( Pos(' ', S) = 1 ) do
begin
if Pos( ' ', S ) = 1 then begin Delete( S, 1, 2 ); Sp:= Sp + ' '; end;
if Pos( ' ', S ) = 1 then begin Delete( S, 1, 1 ); Sp:= Sp + ' '; end;
end;
SpWdth:= GetTextWidth( Sp );
TxtWdth:= GetTextWidth( Strings(StPosY + i) ) + RightSpace;
if ( TxtWdth > SpWdth ) and ( (TxtWdth - SpWdth) > AddTxtWdth ) then begin AddTxtWdth:= TxtWdth - SpWdth; STmp:= SL[4].Strings[i]; end;
Sp:= '';
end;

if AddTxtWdth > 0 then
begin
if (FParts[5] = '') and (FParts[9] = '') then begin RLessChk:= true; AddTxtWdth:= AddTxtWdth + GetTextWidth( STmp); end
else RLessChk:= false;
SL[0].Text:= MakeHorizontalFrame( SL[0].Text, SL[6].Text, SL[1].Text, AddTxtWdth, RLessChk );
SL[2].Text:= MakeHorizontalFrame( SL[2].Text, SL[7].Text, SL[3].Text, AddTxtWdth, RLessChk );
for i:= 0 to SL[6].Count - 1 do
if GetTextWidth( SL[6].Strings[i] ) > MxTxtWdth then MxTxtWdth:= GetTextWidth( SL[6].Strings[i] );
if MxTxtWdth > 0 then
begin
i:= 1;
repeat TxtWdth:= MxTxtWdth * i; i:= i + 1; until TxtWdth >= AddTxtWdth;
AddTxtWdth:= TxtWdth;
end;
end;

for i:= 0 to SL[5].Count-1 do
begin
S:= SL[5].Strings[i];
while ( Pos(' ', S) = 1 ) or ( Pos(' ', S) = 1 ) do
begin
if Pos( ' ', S ) = 1 then begin Delete( S, 1, 2 ); Sp:= Sp + ' '; end;
if Pos( ' ', S ) = 1 then begin Delete( S, 1, 1 ); Sp:= Sp + ' '; end;
end;
SpWdth:= GetTextWidth( Sp ) + AddTxtWdth;
if i > LCnt-1 then
begin
if S <> '' then SL[5].Strings[i]:= GetSpace( SpWdth, Spacer ) + S
else if S = '' then SL[5].Strings[i]:= '';
end
else
begin
TxtWdth:= GetTextWidth( Strings(StPosY + i) );
if S = '' then SL[5].Strings[i]:= Strings(StPosY + i)
else SL[5].Strings[i]:= Strings(StPosY + i) + GetSpace( SpWdth - TxtWdth, Spacer ) + S;
end;
Sp:= '';
end;

S0:= DockingFramePatrs( SL[0].Text, SL[1].Text );
S1:= DockingFramePatrs( SL[4].Text, SL[5].Text );
S2:= DockingFramePatrs( SL[2].Text, SL[3].Text );
S:= S0 + S1 + S2;

repeat
S := ReplaseStr( S, ' ' + #13, #13 );
S := ReplaseStr( S, ' ' + #13, #13 );
until Pos(' ' + #13, S) + Pos(' ' + #13, S) = 0;

finally
for i:= 0 to 9 do SL[i].free;
end;

EditorChangeLines( StPosY, EdPosY, S );
SetCaret( 0, StPosY );

end;


procedure MenuItemClick( Sender : TObject );
var
I : Integer;
begin
for i:= 0 to GetArrayLength( MenuItem ) - 1 do
begin
if Sender = MenuItem[i] then
begin
MenuItem[i].Checked:= true;
IniWriteInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'LastMenuItem', i );
SpdBtn.Hint:= '枠線/フキダシ入力 - ' + ChangeFileExt( MenuItem[i].Hint, '' );
Break;
end;
end;
end;


procedure MainFormClose( Sender : TObject; var Action: TCloseAction );
var
Obj: TObject;
MnItm: TMenuItem;
S : String;
Str : TStrings;
I : Integer;
begin
Action:= caNone;

235 ◆2MbZnrMECE:2011/10/08(土) 10:37:56 ID:KepI4dBc

for i:= 0 to Application.ComponentCount-1 do
if (Application.Components[i].Name <> '') and (Application.Components[i].Name <> 'EditFrame') then Application.Components[i].Free;

Action:= caFree;

Obj:= Application.MainForm.FindComponent( 'menu_file_Recent' );
if Obj=nil then Exit;
MnItm:= TMenuItem(Obj);
for i:= 0 to MnItm.Count-1 do
begin
if MnItm.Items[i].Hint = '' then Break;
S:= S + MnItm.Items[i].Hint + #13#10;
end;
Str:= TStringList.Create;
Str.Add( TrimRight(S) );
Str.SaveToFile( AppPath + 'RecentFiles.txt' );
Str.Free;
end;




begin

for i:= 0 to Application.ComponentCount-1 do
if Application.Components[i].Name = 'FrameInputButton' then Exit;

if DirExists( AppPath + 'FrameAA\' ) = false then begin MessageBox( AppPath + 'FrameAA フォルダが見つかりません', 'ERROR', MB_OK ); Exit; end;
if FileExists( AppPath + 'FrameAA\FrameInputButton.ini' ) = false then
begin
FileSaveText( AppPath + 'FrameAA\FrameInputButton.ini', '' );
IniWriteInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'BtnLeft', 0 );
IniWriteInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'BtnTop', 0 );
IniWriteInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'LastMenuItem', 0 );
IniWriteInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'RightSpace', 22 );
IniWriteInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'Spacer', 1 );
end;

BtnLeft:= IniReadInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'Left', 0 );
BtnTop:= IniReadInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'Top', 0 );
LastMenuItem:= IniReadInt( AppPath + 'FrameAA\FrameInputButton.ini', 'Setting', 'LastMenuItem', 0 );

Form:= TForm.Create( Application );
Form.Parent:= Application.MainForm;
Form.Name:= 'FrameInputButton';
Form.SetBounds( BtnLeft, BtnTop, 23, 22 );
Form.BorderStyle:= bsNone;

FName:= FindFirst( AppPath + 'FrameAA\*.asd', $0000003F );
i:= 1;
while FName <> '' do
begin
FName:= FindNext;
If FName = '' then break
else i:= i + 1;
end;
SetArrayLength( MenuItem, i );

for i:= 0 to GetArrayLength( MenuItem ) - 1 do
begin
MenuItem[i]:= TMenuItem.Create( Self );
if i = 0 then begin FName:= FindFirst(AppPath + 'FrameAA\*.asd', $0000003F); ; MenuItem[0].Caption := ChangeFileExt( FName, '' ); end
else begin FName:= FindNext MenuItem[i].Caption:= ChangeFileExt( FName, '' ); end;
MenuItem[i].Hint:= FName;
MenuItem[i].RadioItem:= true;
MenuItem[i].OnClick:= @MenuItemClick;
end;
if LastMenuItem > GetArrayLength( MenuItem ) - 1 then LastMenuItem:= 0;
MenuItem[LastMenuItem].Checked:= true;

PopupMenu:= TPopupMenu.Create( Form );
for i:= 0 to GetArrayLength( MenuItem ) - 1 do PopupMenu.Items.Add( MenuItem[i] );
PopupMenu.AutoPopup:= true;
Form.PopupMenu:= PopupMenu;

SpdBtn:= TSpeedButton.Create( Form );
SpdBtn.Parent:= Form;
SpdBtn.Align:= alClient;
if FileExists ( AppPath + 'FrameAA\FrameInputButton_Icon.bmp' ) then
begin
Bmp:= TBitmap.Create;
Bmp.LoadFromFile( AppPath + 'FrameAA\FrameInputButton_Icon.bmp' );
SpdBtn.Glyph:= Bmp;
Bmp.Free;
end
else SpdBtn.Caption:= '□';
SpdBtn.ShowHint:= true;
SpdBtn.Hint:= '枠線/フキダシ入力 - ' + ChangeFileExt( MenuItem[LastMenuItem].Hint, '' );;
SpdBtn.OnClick:= @SpdButtonClick;

Application.MainForm.OnClose:= @MainFormClose;

Form.Visible:= true;
while Form.Visible do Application.HandleMessage;

end.
-------------------------------------------------------

236 ◆2MbZnrMECE:2011/10/08(土) 10:38:16 ID:KepI4dBc

■ズレない上書き矩形貼付け

 簡易渡世人もしくは高性能矩形貼付け的なもの。
 使用には後述の "Spacer.epu" が必須。

-------------------------------------------------------
const
// ズレを補正するためのスペースを作る方式を0〜3で設定
// 0 = dot1個 + スペース(多少ズレるがドットが目立たない)
// 1 = dot複数個 + スペース(ほぼズレない)
// 2 = 10進数ユニコードスペース使用(完全にズレないが容量が増える)
// 3 = 16進数ユニコードスペース使用(同上)
Spacer = 1;



{$INCLUDE $S\Library\Spacer.epu}

function DelEndSp( S : String ) : String;
begin
while ( Copy( S, Length(S), Length(S) ) = ' ' ) or ( Copy( S, Length(S)-1, Length(S) ) = ' ' ) do
begin
if Copy( S, Length(S), Length(S) ) = ' ' then Delete( S, Length(S), Length(S) );
if Copy( S, Length(S)-1, Length(S) ) = ' ' then Delete( S, Length(S)-1, Length(S) );
end;
Result:= S;
end;

function GetCRTxtWidth( S : String ) : Integer;
var
I : Integer;
begin
if Spacer = 2 then
begin
repeat
if Pos( '&#8202;', S ) > 0 then begin Delete( S, Pos('&#8202;', S), 7 ); i:= i + 1; end;
if Pos( '&#8201;', S ) > 0 then begin Delete( S, Pos('&#8201;', S), 7 ); i:= i + 2; end;
if Pos( '&#8198;', S ) > 0 then begin Delete( S, Pos('&#8198;', S), 7 ); i:= i + 3; end;
if Pos( '&#8197;', S ) > 0 then begin Delete( S, Pos('&#8197;', S), 7 ); i:= i + 4; end;
if Pos( '&#8196;', S ) > 0 then begin Delete( S, Pos('&#8196;', S), 7 ); i:= i + 5; end;
until Pos('&#8202;', S) + Pos('&#8201;', S) + Pos('&#8198;', S) + Pos('&#8197;', S) + Pos('&#8196;', S) = 0;
end

else if Spacer = 3 then
begin
repeat
if Pos( '&#x200A;', S ) > 0 then begin Delete( S, Pos('&#x200A;', S), 8 ); i:= i + 1; end;
if Pos( '&#x2009;', S ) > 0 then begin Delete( S, Pos('&#x2009;', S), 8 ); i:= i + 2; end;
if Pos( '&#x2006;', S ) > 0 then begin Delete( S, Pos('&#x2006;', S), 8 ); i:= i + 3; end;
if Pos( '&#x2005;', S ) > 0 then begin Delete( S, Pos('&#x2005;', S), 8 ); i:= i + 4; end;
if Pos( '&#x2004;', S ) > 0 then begin Delete( S, Pos('&#x2004;', S), 8 ); i:= i + 5; end;
until Pos('&#x200A;', S) + Pos('&#x2009;', S) + Pos('&#x2006;', S) + Pos('&#x2005;', S) + Pos('&#x2004;', S) = 0;
end;

Result:= GetTextWidth( S ) + i;
end;

function GetLeftText( S : String; LTxtWdth, LSpWdth : Integer ) : String;
var
I, IM : Integer;
B : Byte;
begin
if GetTextWidth( S ) <= LTxtWdth then Result:= S
else for i:= 1 to Length( S ) do
begin
B:= Ord( StrGet(S, i) );
if ( (B>=128) and (B<=160) ) or ( (B>=224) and (B<=255) ) then begin i:= i + 1; IM:= 2; end
else IM:= 1;
Result:= Copy( S, 1, i );
if GetTextWidth( Result ) = LTxtWdth + LSpWdth then Break
else if GetTextWidth( Result ) > LTxtWdth + LSpWdth then begin Result:= Copy( S, 1, i - IM ); Break; end;
end;
Result:= DelEndSp( Result );
end;

237 ◆2MbZnrMECE:2011/10/08(土) 10:38:36 ID:KepI4dBc

function GetRightText( S0, S1 : String ) : String;
var
I, TxtWdth0, TxtWdth1 : Integer;
B : Byte;
begin
if (Spacer = 2) or (Spacer = 3) then TxtWdth0:= GetCRTxtWidth( S0 )
else TxtWdth0:= GetTextWidth( S0 );
TxtWdth1:= GetTextWidth( S1 );
if TxtWdth0 >= TxtWdth1 then begin Result:= ''; Exit; end
else for i:= 1 to Length( S1 ) do
begin
B:= Ord( StrGet(S1, i) );
if ( (B>=128) and (B<=160) ) or ( (B>=224) and (B<=255) ) then i:= i + 1;
if GetTextWidth( Copy(S1, 1, i) ) >= TxtWdth0 then begin Delete( S1, 1, i ); Break; end
end;

while ( Pos(' ', S1) = 1 ) or ( Pos(' ', S1) = 1 ) do
begin
if Pos( ' ', S1 ) = 1 then Delete( S1, 1, 2 )
if Pos( ' ', S1 ) = 1 then Delete( S1, 1, 1 );
end;

Result:= GetSpaceLD( (TxtWdth1 - TxtWdth0) - GetTextWidth(S1), Spacer, false ) + S1;
end;



var
S, S0, S1, Sp : String;
I, MinLSpWdth, LTxtWdth : Integer;
LSpWdth : array of Integer;
SL0, SL1 : TStringList;

begin

MinLSpWdth:= -1;
LTxtWdth:= GetTextWidth( Copy(Strings(CaretPosY), 1, CaretPosX) );

SL0:= TStringList.Create;
SL1:= TStringList.Create;
try
SL1.SetText( GetClipbrdText );
SetArrayLength( LSpWdth, SL1.Count );

for i:= 0 to SL1.Count - 1 do
begin
S:= SL1.Strings[i];
S:= DelEndSp( S );
if S = '' then begin SL1.Strings[i]:= S; Continue; end;

while ( Pos(' ', S) = 1 ) or ( Pos(' ', S) = 1 ) or ( Pos('.', S) = 1 ) do
begin
if Pos( ' ', S ) = 1 then begin Delete( S, 1, 2 ); Sp:= Sp + ' '; end;
if Pos( ' ', S ) = 1 then begin Delete( S, 1, 1 ); Sp:= Sp + ' '; end;
if Pos( '.', S ) = 1 then begin Delete( S, 1, 1 ); Sp:= Sp + '.'; end;
end;

LSpWdth[i]:= GetTextWidth( Sp );
if MinLSpWdth = -1 then MinLSpWdth:= LSpWdth[i];
if LSpWdth[i] < MinLSpWdth then MinLSpWdth:= LSpWdth[i];
SL1.Strings[i]:= S;
Sp:= '';
end;

for i:= 0 to SL1.Count-1 do
if LSpWdth[i] >= MinLSpWdth then LSpWdth[i]:= LSpWdth[i] - MinLSpWdth;

for i:= 0 to SL1.Count-1 do
begin
SL0.Add( Strings(CaretPosY+i) );
if SL1.Strings[i] = '' then Continue;
S0:= GetLeftText( SL0.Strings[i], LTxtWdth, LSpWdth[i] );
if S0 = '' then S0:= S0 + GetSpaceLD( LTxtWdth + LSpWdth[i] - GetTextWidth( S0 ), Spacer, true ) + SL1.Strings[i]
else S0:= S0 + GetSpaceLD( LTxtWdth + LSpWdth[i] - GetTextWidth( S0 ), Spacer, false ) + SL1.Strings[i];
S1:= GetRightText( S0, SL0.Strings[i] );
SL0.Strings[i]:= S0 + S1;
end;

if SL1.Count > (LineCount - CaretPosY) then EditorChangeLines( CaretPosY, LineCount - 1, SL0.Text )
else EditorChangeLines( CaretPosY, CaretPosY + SL1.Count - 1, SL0.Text );
finally
SL0.free;
SL1.free;
end;

end.
-------------------------------------------------------

238 ◆2MbZnrMECE:2011/10/08(土) 10:38:55 ID:KepI4dBc

■簡易左詰め

 カーソル位置を基準にAAの左側をズレないように一括削除する。
 非選択時はカーソル行から最下段まで、選択状態時は範囲の行に対して実行。
 同じく "Spacer.epu" が必要。

-------------------------------------------------------
const
// 設定
// Spacer … ズレを補正するためのスペースを作る方式
// 0 = dot1個 + スペース
// 1 = dot複数個 + スペース
// 2 = ユニコードスペース(10進数)使用
// 3 = ユニコードスペース(16進数)使用
// HeadSpace … 行頭の半角スペースを許可するかしないか
// 0 = しない
// 1 = する

Spacer = 1;
HeadSpace = 0;



{$INCLUDE $S\Library\Spacer.epu}

function DelLeftTxt( S : String; LTxtWdth : Integer ) : String;
var
Sp : String;
I, TxtWdth, SpWdth : Integer;
B : Byte;
HdChk : Boolean;
begin
if HeadSpace = 1 then HdChk:= false
else HdChk:= true;

if GetTextWidth( S ) <= LTxtWdth then begin Result:= ''; Exit; end
else for i:= 1 to Length( S ) do
begin
B:= Ord( StrGet(S, i) );
if ( (B>=128) and (B<=160) ) or ( (B>=224) and (B<=255) ) then i:= i + 1;
TxtWdth:= GetTextWidth( Copy(S, 1, i) );
if TxtWdth >= LTxtWdth then begin Delete( S, 1, i ); Break; end;
end;

while ( Pos(' ', S) = 1 ) or ( Pos(' ', S) = 1 ) do
begin
if Pos( ' ', S ) = 1 then begin Delete( S, 1, 2 ); Sp:= Sp + ' '; end;
if Pos( ' ', S ) = 1 then begin Delete( S, 1, 1 ); Sp:= Sp + ' '; end;
end;

SpWdth:= GetTextWidth( Sp );
Result:= GetSpaceLD( TxtWdth - LTxtWdth + SpWdth, Spacer, HdChk ) + S;
end;



var
I, StPosY, EdPosY, PosX, LTxtWdth : Integer;
SL : TStringList;

begin

if Selecting then
begin
StPosY:= SelStartY;
EdPosY:= SelEndY;
PosX:= SelStartX;
SetSelecting( false );
end

else
begin
StPosY:= CaretPosY;
EdPosY:= LineCount - 1;
PosX:= CaretPosX;
end;

SL:= TStringList.Create;
try
LTxtWdth:= GetTextWidth( Copy(Strings(StPosY), 1, PosX) );
for i:= 0 to EdPosY - StPosY do begin SL.Add( Strings(StPosY+i) ); SL.Strings[i]:= DelLeftTxt( SL.Strings[i], LTxtWdth ); end;
EditorChangeLines( StPosY, EdPosY, SL.Text );
CaretLineHome;
finally
SL.free;
end;

end.
-------------------------------------------------------

239 ◆2MbZnrMECE:2011/10/08(土) 10:39:15 ID:KepI4dBc

■お気に入りボタン付きスクリプトパネル

 普段は縦幅5ドットくらいに縮んで隠れ、カーソルを近くに持っていくと元の大きさに戻る
 スクリプト実行ランチャー。お気に入りを登録できるボタン5個付き。

-------------------------------------------------------
const
PanelLeft = 0; //パネルを配置するX座標(タイトルバーを除いたウィンドウ左上からの位置)
PanelTop = 0; //パネルを配置するY座標(同上)
ScrPath = 'Script\Library\'; //スクリプトフォルダのパス(exeのあるフォルダからの相対パス)
Fav1 = ''; //以下、お気に入りボタン1〜5に登録するスクリプト(拡張子含むファイル名のみで記述)
Fav2 = '';
Fav3 = '';
Fav4 = '';
Fav5 = '';


var
Form : TForm;
Panel : TPanel;
ComboBox : TComboBox;
BitBtn : array[0..6] of TBitBtn;
Bmp : array[0..6] of TBitmap;
Labl : TLabel;
Fname : String;
I : Integer;
Img : TImage;

procedure ButtonExecuteScript( Sender : TObject );
begin
ScriptExecuteF( AppPath + ScrPath + ComboBox.Text + '.epp' );
end;

procedure ButtonOpenScript( Sender : TObject );
begin
FileOpenA( AppPath + ScrPath + ComboBox.Text + '.epp' );
// Exec( 'NOTEPAD', AppPath + ScrPath + ComboBox.Text + '.epp', 0 );
end;

procedure ButtonFavorite( Sender : TObject );
begin
case Sender of
BitBtn[2]: ScriptExecuteF( AppPath + ScrPath + Fav1 );
BitBtn[3]: ScriptExecuteF( AppPath + ScrPath + Fav2 );
BitBtn[4]: ScriptExecuteF( AppPath + ScrPath + Fav3 );
BitBtn[5]: ScriptExecuteF( AppPath + ScrPath + Fav4 );
BitBtn[6]: ScriptExecuteF( AppPath + ScrPath + Fav5 );
end;
end;

procedure MainFormClose( Sender : TObject; var Action: TCloseAction );
var
Obj: TObject;
MnItm: TMenuItem;
S : String;
Str : TStrings;
I : Integer;
begin
Action:= caNone;

for i:= 0 to Application.ComponentCount-1 do
if (Application.Components[i].Name <> '') and (Application.Components[i].Name <> 'EditFrame') then Application.Components[i].Free;

Action:= caFree;

Obj:= Application.MainForm.FindComponent( 'menu_file_Recent' );
if Obj=nil then Exit;
MnItm:= TMenuItem(Obj);
for i:= 0 to MnItm.Count-1 do
begin
if MnItm.Items[i].Hint = '' then Break;
S:= S + MnItm.Items[i].Hint + #13#10;
end;
Str:= TStringList.Create;
Str.Add( TrimRight(S) );
Str.SaveToFile( AppPath + 'RecentFiles.txt' );
Str.Free;
end;

procedure BtnMouseDown( Sender : TObject; Button : TMouseButton; Shift : TShiftState; X, Y : Integer );
begin
if (ssCtrl in Shift) and ( Button = mbLeft ) then Form.Close;
end;

procedure FormClose( Sender : TObject; var Action: TCloseAction );
begin
Action:= caFree;
end;

procedure PanelExit( Sender : TObject );
begin
Form.Height:= 5;
ComboBox.Hide;
BitBtn[0].Hide;
BitBtn[1].Hide;
end;

240 ◆2MbZnrMECE:2011/10/08(土) 10:39:35 ID:KepI4dBc

procedure FormMouseMove(Sender : TObject; Shift : TShiftState; X, Y : Integer);
begin
if Form.Height <= 5 then
begin
Form.Height:= 52;
ComboBox.Show;
BitBtn[0].Show;
BitBtn[1].Show;
ComboBox.SetFocus;
end
else if (X < 3) or (X > 197) or (Y > 49) then PanelExit(Self);
end;


begin

for i:= 0 to Application.ComponentCount-1 do
if Application.Components[i].Name = 'ScriptPanel' then Exit;

Form:= TForm.Create( Application );
Form.Parent:= Application.Mainform;
Form.Name:= 'ScriptPanel';
Form.Left:= PanelLeft;
Form.Top:= PanelTop;
Form.Width:= 200;
Form.Height:= 52;
Form.BorderStyle:= bsNone;
Form.OnClose:= @FormClose;

Panel:= TPanel.Create( Form );
Panel.Parent:= Form;
Panel.Align:= alClient;
Panel.OnMouseMove:= @FormMouseMove;
Panel.OnExit:= @PanelExit;

ComboBox:= TComboBox.Create( Form );
ComboBox.Parent:= Panel
ComboBox.Left:= 2;
ComboBox.Top:= 3;
ComboBox.Width:= 145;
ComboBox.Style:= csDropDownList;
Fname:= ChangeFileExt( FindFirst(AppPath + ScrPath + '*.epp', $0000003F), '' )
ComboBox.Items.Add( Fname );
while Fname <> '' do
begin
Fname:= FindNext;
If Fname = '' then break;
ComboBox.Items.Add( ChangeFileExt(Fname, '') );
end;
ComboBox.ItemIndex:= 0;
ComboBox.DropDownCount:= 12;

BitBtn[0]:= TBitBtn.Create( Form );
BitBtn[0].Parent:= Panel
BitBtn[0].SetBounds( ComboBox.Left+148, 1, 23, 22 )
if FileExists ( AppPath + ScrPath +'ScriptPanel_Btn_Run.bmp' ) then
begin
Bmp[0]:= TBitmap.Create;
Bmp[0].LoadFromFile( AppPath + ScrPath +'ScriptPanel_Btn_Run.bmp' );
BitBtn[0].Glyph:= Bmp[0];
Bmp[0].Free;
end
else BitBtn[0].Caption:= 'R';
BitBtn[0].ShowHint:= true;
BitBtn[0].Hint:= 'スクリプト実行';
BitBtn[0].Default:= true;
BitBtn[0].OnClick:= @ButtonExecuteScript;
BitBtn[0].OnMouseDown:= @BtnMouseDown;

BitBtn[1]:= TBitBtn.Create( Form );
BitBtn[1].Parent:= Panel
BitBtn[1].SetBounds( BitBtn[0].Left+23, BitBtn[0].Top, BitBtn[0].Width, BitBtn[0].Height );
if FileExists ( AppPath + ScrPath +'ScriptPanel_Btn_Edit.bmp' ) then
begin
Bmp[1]:= TBitmap.Create;
Bmp[1].LoadFromFile( AppPath + ScrPath + 'ScriptPanel_Btn_Edit.bmp' );
BitBtn[1].Glyph:= Bmp[1];
Bmp[1].Free;
end
else BitBtn[1].Caption:= 'E';
BitBtn[1].ShowHint:= true;
BitBtn[1].Hint:= 'スクリプトファイルを開く';
BitBtn[1].OnClick:= @ButtonOpenScript;

Labl:= TLabel.Create( Form );
Labl.Parent:= Panel;
Labl.Left:= 5;
Labl.Top:= 30;
Labl.Caption:= 'お気に入り:';

241 ◆2MbZnrMECE:2011/10/08(土) 10:39:55 ID:KepI4dBc

BitBtn[2]:= TBitBtn.Create( Form );
BitBtn[2].Parent:= Panel;
BitBtn[2].Left:= Labl.Left + 64;
BitBtn[2].Top:= 26;
BitBtn[2].Width:= 23;
BitBtn[2].Height:= 22;
BitBtn[2].OnClick:= @ButtonFavorite;
BitBtn[2].ShowHint:= true;
if Fav1 = '' then BitBtn[2].Hint:= '(未登録)'
else BitBtn[2].Hint:= ChangeFileExt( Fav1, '' );
if FileExists ( AppPath + ScrPath + 'ScriptPanel_Btn_Fav1.bmp' ) then
begin
Bmp[2]:= TBitmap.Create;
Bmp[2].LoadFromFile( AppPath + ScrPath + 'ScriptPanel_Btn_Fav1.bmp' );
BitBtn[2].Glyph:= Bmp[2];
Bmp[2].Free;
end
else BitBtn[2].Caption:= '1';

for i:= 3 to 6 do
begin
BitBtn[i]:= TBitBtn.Create( Form );
BitBtn[i].Parent:= Panel;
BitBtn[i].Left:= BitBtn[i-1].Left + 26;
BitBtn[i].Top:= BitBtn[2].Top;
BitBtn[i].Width:= BitBtn[2].Width;
BitBtn[i].Height:= BitBtn[2].Height;
BitBtn[i].OnClick:= @ButtonFavorite;
BitBtn[i].ShowHint:= true;
if FileExists ( AppPath + ScrPath + 'ScriptPanel_Btn_Fav' + IntToStr(i - 1) + '.bmp' ) then
begin
Bmp[i]:= TBitmap.Create;
Bmp[i].LoadFromFile( AppPath + ScrPath + 'ScriptPanel_Btn_Fav' + IntToStr(i - 1) + '.bmp' );
BitBtn[i].Glyph:= Bmp[i];
Bmp[i].Free;
end
else BitBtn[i].Caption:= IntToStr( i - 1 );
end;

if Fav2 = '' then BitBtn[3].Hint:= '(未登録)'
else BitBtn[3].Hint:= ChangeFileExt( Fav2, '' );
if Fav3 = '' then BitBtn[4].Hint:= '(未登録)'
else BitBtn[4].Hint:= ChangeFileExt( Fav3, '' );
if Fav4 = '' then BitBtn[5].Hint:= '(未登録)'
else BitBtn[5].Hint:= ChangeFileExt( Fav4, '' );
if Fav5 = '' then BitBtn[6].Hint:= '(未登録)'
else BitBtn[6].Hint:= ChangeFileExt( Fav5, '' );

Form.Visible:= true;
Application.MainForm.OnClose:= @MainFormClose;
ComboBox.SetFocus;
while Form.Visible do Application.HandleMessage;

end.
-------------------------------------------------------

242 ◆2MbZnrMECE:2011/10/08(土) 10:40:15 ID:KepI4dBc

■Spacer.epu

 渡された数値幅のスペースを作るライブラリ。
 他のスクリプトから呼び出して使うものなので、単体では機能しない。

 名前は必ず "Spacer.epu" で保存し、Script\Libraryフォルダに入れること。

-------------------------------------------------------

function GetSpace( W, Spacer : Integer ) : String;
var
W0, W1, I, I0, Cnt : Integer;
S, Dt : String;

begin

if (Spacer < 1) or (Spacer > 3) then
begin
W0:= W;
repeat
if W < 2 then begin S:= ''; Break; end
else if W < 4 then S:= '.'
else if W < 7 then S:= ' '
else if W < 10 then S:= ' .'
else if W < 13 then S:= ' '
else if W = 15 then S:= '  '
else for i:= 0 to W/16 do
begin
W1:= W - 16 * i;
if W1 mod 11 = 0 then begin for i0:= 1 to W1/11 do S:= S + ' '; for i0:= 1 to i do S:= S + '  '; Break; end
else if W1 = 0 then begin for i0:= 1 to i do S:= S + '  ' Break; end
else if W1 = 5 then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S; Break; end
else if W1 = 8 then begin for i0:= 1 to i do S:= S + '  '; S:= S + '. '; Break; end
else if W1 = 13 then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S + '. '; Break; end;
end;
if S <> '' then Break;
Cnt:= Cnt + 1;
if Cnt = 1 then begin W:= W0 - 3; Dt:= '.'; end
else if Cnt = 2 then begin W:= W0 - 1; Dt:= ''; end
else if Cnt = 3 then begin W:= W0 + 1; Dt:= ''; end
else if Cnt = 4 then begin W:= W0 - 4; Dt:= '.'; end
else if Cnt = 5 then begin W:= W0 - 2; Dt:= '.'; end;
until S <> '';
Result:= S + Dt;
end

else if Spacer = 1 then
begin
repeat
if W < 2 then begin S:= ''; Break; end
else if W < 4 then S:= '.'
else if W < 6 then S:= ' '
else if W = 6 then S:= '..'
else if W < 9 then S:= ' .'
else if W = 10 then S:= ' '
else for i:= 0 to W/16 do
begin
W0:= W - 16 * i;
if W0 mod 11 = 0 then begin for i0:= 1 to W0/11 do S:= S + ' '; for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 0 then begin for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 8 then begin for i0:= 1 to i do S:= S + '  '; S:= S + '. '; Break; end
else if W0 = 5 then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S; Break; end
else if W0 = 13 then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S + '. '; Break; end;
end;
if S = '' then begin W:= W - 3; Dt:= Dt + '.'; end;
until ( S <> '' ) or ( W = 0 );
Result:= S + Dt;
end

else if Spacer = 2 then
begin
repeat
if W = 0 then begin Result:= ''; Exit; end
else if W = 1 then S:= '&#8202;'
else if W = 2 then S:= '&#8201;'
else if W = 3 then S:= '&#8198;'
else if W = 4 then S:= '&#8197;'
else if W = 5 then S:= ' '
else for i:= 0 to W/16 do
begin
W0:= W - 16 * i;
if W0 mod 11 = 0 then begin for i0:= 1 to W0/11 do S:= S + ' '; for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 0 then begin for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 5 then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S; Break; end;
end;
if S = '' then begin Cnt:= Cnt + 1; W:= W - 1; Continue; end;
until S <> '';

if Cnt = 1 then S:= S + '&#8202;'
else if Cnt = 2 then S:= S + '&#8201;'
else if Cnt = 3 then S:= S + '&#8198;'
else if Cnt = 4 then S:= S + '&#8197;'
else if Cnt = 5 then S:= S + '&#8196;';

Result:= S;
end

243 ◆2MbZnrMECE:2011/10/08(土) 10:40:35 ID:KepI4dBc

else if Spacer = 3 then
begin
repeat
if W = 0 then begin Result:= ''; Exit; end
else if W = 1 then S:= '&#x200A;'
else if W = 2 then S:= '&#x2009;'
else if W = 3 then S:= '&#x2006;'
else if W = 4 then S:= '&#x2005;'
else if W = 5 then S:= ' '
else for i:= 0 to W/16 do
begin
W0:= W - 16 * i;
if W0 mod 11 = 0 then begin for i0:= 1 to W0/11 do S:= S + ' '; for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 0 then begin for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 5 then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S; Break; end;
end;
if S = '' then begin Cnt:= Cnt + 1; W:= W - 1; Continue; end;
until S <> '';

if Cnt = 1 then S:= S + '&#x200A;'
else if Cnt = 2 then S:= S + '&#x2009;'
else if Cnt = 3 then S:= S + '&#x2006;'
else if Cnt = 4 then S:= S + '&#x2005;'
else if Cnt = 5 then S:= S + '&#x2004;';

Result:= S;
end;

end;






function GetSpaceLD( W, Spacer : Integer; HdChk : Boolean ) : String;
var
W0, W1, I, I0, Cnt : Integer;
S, Dt : String;

begin

if (Spacer < 1) or (Spacer > 3) then
begin
W0:= W;
repeat
if W < 2 then begin S:= ''; Break; end
else if (W < 5) and (HdChk = true) then S:= '.'
else if (W < 7) and (HdChk = true) then S:= '..'
else if (W < 4) and (HdChk = false) then S:= '.'
else if (W < 7) and (HdChk = false) then S:= ' '
else if W < 10 then S:= '. '
else if W < 13 then S:= ' '
else if W = 15 then S:= '  '
else for i:= 0 to W/16 do
begin
W1:= W - 16 * i;
if W1 mod 11 = 0 then begin for i0:= 1 to W1/11 do S:= S + ' '; for i0:= 1 to i do S:= S + '  '; Break; end
else if W1 = 0 then begin for i0:= 1 to i do S:= S + '  ' Break; end
else if W1 = 8 then begin for i0:= 1 to i do S:= S + '  '; S:= '. ' + S; Break; end
else if (W1 = 5) and (HdChk = false) then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S; Break; end
else if (W1 = 13) and (HdChk = false) then begin for i0:= 1 to i do S:= S + '  '; S:= ' . ' + S; Break; end;
end;
if S <> '' then Break;
Cnt:= Cnt + 1;
if Cnt = 1 then begin W:= W0 - 3; Dt:= '.'; end
else if Cnt = 2 then begin W:= W0 - 1; Dt:= ''; end
else if Cnt = 3 then begin W:= W0 + 1; Dt:= ''; end
else if Cnt = 4 then begin W:= W0 - 4; Dt:= '.'; end
else if Cnt = 5 then begin W:= W0 - 2; Dt:= '.'; end;
until S <> '';
Result:= Dt + S;
end

244 ◆2MbZnrMECE:2011/10/08(土) 10:40:55 ID:KepI4dBc

else if Spacer = 1 then
begin
repeat
if W < 2 then begin S:= ''; Break; end
else if (W < 5) and (HdChk = true) then S:= '.'
else if (W < 7) and (HdChk = true) then S:= '..'
else if (W < 4) and (HdChk = false) then S:= '.'
else if (W < 6) and (HdChk = false) then S:= ' '
else if (W = 6) and (HdChk = false) then S:= '..'
else if W < 9 then S:= '. '
else if W = 10 then S:= ' '
else for i:= 0 to W/16 do
begin
W0:= W - 16 * i;
if W0 mod 11 = 0 then begin for i0:= 1 to W0/11 do S:= S + ' '; for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 0 then begin for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 8 then begin for i0:= 1 to i do S:= S + '  '; S:= '. ' + S; Break; end
else if (W0 = 5) and (HdChk = false) then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S; Break; end
else if (W0 = 13) and (HdChk = false) then begin for i0:= 1 to i do S:= S + '  '; S:= ' . ' + S; Break; end;
end;
if S = '' then begin W:= W - 3; Dt:= Dt + '.'; end;
until ( S <> '' ) or ( W = 0 );
Result:= Dt + S;
end

else if Spacer = 2 then
begin
repeat
if W = 0 then begin Result:= ''; Exit; end
else if W = 1 then S:= '&#8202;'
else if W = 2 then S:= '&#8201;'
else if W = 3 then S:= '&#8198;'
else if W = 4 then S:= '&#8197;'
else if (W = 5) and (HdChk = true) and ( Cnt = 0 ) then S:= '&#8196;'
else if (W = 5) and (HdChk = true) and ( Cnt > 0 ) then S:= ' '
else if (W = 5) and (HdChk = false) then S:= ' '
else for i:= 0 to W/16 do
begin
W0:= W - 16 * i;
if W0 mod 11 = 0 then begin for i0:= 1 to W0/11 do S:= S + ' '; for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 0 then begin for i0:= 1 to i do S:= S + '  '; Break; end
else if (W0 = 5) and (HdChk = false) then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S; Break; end;
end;
if S = '' then begin Cnt:= Cnt + 1; W:= W - 1; Continue; end;
until S <> '';

if Cnt = 1 then S:= '&#8202;' + S
else if Cnt = 2 then S:= '&#8201;' + S
else if Cnt = 3 then S:= '&#8198;' + S
else if Cnt = 4 then S:= '&#8197;' + S
else if Cnt = 5 then S:= '&#8196;' + S;

Result:= S;
end

else if Spacer = 3 then
begin
repeat
if W = 0 then begin Result:= ''; Exit; end
else if W = 1 then S:= '&#x200A;'
else if W = 2 then S:= '&#x2009;'
else if W = 3 then S:= '&#x2006;'
else if W = 4 then S:= '&#x2005;'
else if (W = 5) and (HdChk = true) and ( Cnt = 0 ) then S:= '&#x2004;'
else if (W = 5) and (HdChk = true) and ( Cnt > 0 ) then S:= ' '
else if (W = 5) and (HdChk = false) then S:= ' '
else for i:= 0 to W/16 do
begin
W0:= W - 16 * i;
if W0 mod 11 = 0 then begin for i0:= 1 to W0/11 do S:= S + ' '; for i0:= 1 to i do S:= S + '  '; Break; end
else if W0 = 0 then begin for i0:= 1 to i do S:= S + '  '; Break; end
else if (W0 = 5) and (HdChk = false) then begin for i0:= 1 to i do S:= S + '  '; S:= ' ' + S; Break; end;
end;
if S = '' then begin Cnt:= Cnt + 1; W:= W - 1; Continue; end;
until S <> '';

if Cnt = 1 then S:= '&#x200A;' + S
else if Cnt = 2 then S:= '&#x2009;' + S
else if Cnt = 3 then S:= '&#x2006;' + S
else if Cnt = 4 then S:= '&#x2005;' + S
else if Cnt = 5 then S:= '&#x2004;' + S;

Result:= S;
end;

end;
-------------------------------------------------------

245 ◆2MbZnrMECE:2011/10/08(土) 10:42:05 ID:KepI4dBc

■枠/フキダシ入力ボタン(もろもろのセット)
ttp://dl.dropbox.com/u/37791434/FrameInputButton.zip


■ズレない上書き矩形貼付け
ttp://dl.dropbox.com/u/37791434/BoxPasteOver.epp


■簡易左詰め
ttp://dl.dropbox.com/u/37791434/MoveLeft.epp


■お気に入りボタン付きスクリプトパネル(アイコンファイル同梱)
ttp://dl.dropbox.com/u/37791434/ScriptPanel02.zip


■Spacer.epu
ttp://dl.dropbox.com/u/37791434/Spacer.epu

246 ◆SPNXXX34sg:2011/10/08(土) 12:15:07 ID:WWUIEp86
ソフト作ってきました

AST変換器

■何が出来るソフト?
スレッドからAAのみを抽出してASTファイルに一括保存できる

■導入
・以下のサイトからAST変換器.zipをダウンロード
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo?pli=1
・解凍する
・ASTConverter3.exeが本体です

■使い方
・スレッドのDatファイルを保存する
 (Janeならスレッドタブを右クリック→このログを保存→datを右クリックで保存)
・datファイルをAST変換器にドロップ
・変換ボタンをクリック
 datファイルと同フォルダに変換したASTファイルが作成されます

■オプション
・変換後ファイル
 変換後のファイル名を設定します。

・名前欄フィルター
 名前欄に入力した文を含むレスのみ変換します。
 特定の職人さんのAAだけ抽出したいとき用

・本文のみ
 レス番号、名前欄、メール欄、日付、IDを除いた本文のみを変換します。

・AAのみ抽出
 AAを含むレスのみ変換します。
 判定を誤ることもあります。

247小さな名無しさん@この板は300レスまで:2011/10/08(土) 13:58:37 ID:J/gWbiYA
乙です

>>245のフキダシやお気に入りは動いたのですが、矩形貼り付けと左詰めが

[Error](294:11):Unknown identifier 'GetSpaceLD'  [OK]

Failed When compiling [OK]

と出てしまって動かないです

248小さな名無しさん@この板は300レスまで:2011/10/08(土) 14:05:48 ID:QnswbYWg
枠/フキダシ入力ボタン(もろもろのセット)にはいってるSpacer.eppはGetSpaceRDファンクションだけでGetSpaceLDファンクションが無いから食い合うね

枠/フキダシ入力ボタン(もろもろのセット)同梱版のSpacer.eppに単独版Spacer.eppにあるGetSpaceLDファンクション以下を追加すれば問題ないよ

249小さな名無しさん@この板は300レスまで:2011/10/08(土) 14:13:05 ID:J/gWbiYA
たしかに同梱版を使ってたので、単独の奴を上書きしたら動きました。ありがとうございます

250小さな名無しさん@この板は300レスまで:2011/10/08(土) 16:15:45 ID:AfAazIss
おお、大量更新乙です

251( ´_ゝ`):2011/10/08(土) 16:25:40 ID:8sdVYcoc
ぬるぽ

252 ◆2MbZnrMECE:2011/10/08(土) 17:05:29 ID:KepI4dBc
>>247
枠ボタンに同梱されてる方が修正漏れでした。
>>245 のFrameInputButton.zipを差し替えました。

既にDL済みの人は、>>248さんの言う通り、Spacer.epuだけをDLし直して
上書きすればOKです。

枠ボタン単体で使う場合は問題ないのですが、今後同じライブラリを使うことがあると困るので、
出来るだけ差し替えてください。

253 ◆2MbZnrMECE:2011/10/08(土) 17:14:06 ID:KepI4dBc
あと◆SPNXXX34sgさん乙です。
これって纏めサイトのやってる人にも福音かも。

254小さな名無しさん@この板は300レスまで:2011/10/08(土) 19:42:21 ID:dF3Cm5sQ
うひょー、こいつは書き溜めが捗るぜー。
乙!!

255小さな名無しさん@この板は300レスまで:2011/10/09(日) 00:45:10 ID:2Esv99OM
早速全部入れてみた!

「ズレない上書き矩形貼付け」って、従来のように枠が出て動かせるわけじゃないのかー

256小さな名無しさん@この板は300レスまで:2011/10/09(日) 01:33:42 ID:AUIUVrKU
>>255

でも合成した状態でAAの位置を動かせるよ

257小さな名無しさん@この板は300レスまで:2011/10/09(日) 04:12:40 ID:Jx1FlMDM
お気に入り付きスクリプトパネルがとても便利だー!
しかし、(´д`)Edit起動時にこのスクリプトを自動で実行させることはできないものなのでしょうか?
それとも(´д`)Editの設定を変えればいけるのでしょうか?誰か教えてください

258小さな名無しさん@この板は300レスまで:2011/10/09(日) 10:39:02 ID:fue5wKWE
「枠/フキダシ入力ボタン」 を使ってみたのですが、エディタが終了できずにタスクマネージャのお世話に。
どうも 「お気に入りボタン付きスクリプトパネル」(ScriptPanel.epp もヤバいみたい) と併用するとダメっぽいのですが、
何か先にスクリプトを終了させる手順とかあったら教えて下さい

259小さな名無しさん@この板は300レスまで:2011/10/09(日) 13:13:40 ID:fue5wKWE
ギャース! 自己解決したので、報告とお詫びを。
FrameInputButton.epp を先に起動させるというアホな事をしてました。
ScriptPanel02.epp → FrameInputButton.epp の順番で起動させれば、何の問題もなく終了できました。
ScriptPanel.eppの方は共存は無理っぽいですね。

260小さな名無しさん@この板は300レスまで:2011/10/09(日) 18:32:07 ID:3QN7RPc.
「枠/フキダシ入力ボタン」と「スクリプトパネル」を起動すると、
テンプレートのAAリストがマウスホイールでスクロールできなくなったのですが、
解決方法ってわかりますか?

261 ◆2MbZnrMECE:2011/10/09(日) 21:33:33 ID:Hrk6edD.
>>260
調べてみましたが、多分それ(´д`)Editのバグじゃないですかね。
テンプレの項目にフォーカスがある状態でタブを全て閉じると、たまに発生するみたいです。
スクリプトに無関係で起こるなら自分にはどうにもできないんでご勘弁を。

>>257
一応>>180の方法で出来なくはないですが、>>187,189の理由で非推奨です。
適当な押しやすいキーに登録しておいて、いつでも呼び出せるようにしておけば
いいと思います。それでもやるなら自己責任でよろしくです。

>>256なにそれkwsk

262小さな名無しさん@この板は300レスまで:2011/10/09(日) 21:45:28 ID:JGMimvUY
256は合成パネルと勘違いしてる予感

263 ◆2MbZnrMECE:2011/10/09(日) 21:54:20 ID:Hrk6edD.
良かった…
作った自分も知らないそんなスゴい機能があるのかと思っちまったぜ……

264 ◆2MbZnrMECE:2011/10/09(日) 22:10:16 ID:Hrk6edD.
自分的には矩形貼付けとフキダシボタンが本命で、スクリプトパネルは
自分用に作ったのをついでに公開しただけなんですが、思いの外好評っぽいんで
ちょっと改造してみました。

ttp://dl.dropbox.com/u/37791434/ScriptPanel02.zip


お気に入りボタンを10個まで表示できるようにし、設定項目がより細かくなってます。

265小さな名無しさん@この板は300レスまで:2011/10/09(日) 22:16:09 ID:3QN7RPc.
>>261
返信ありがとうございます
試しにいろいろやってみたら、
メニューバーのScriptからスクリプトパネルなどを起動すると発生せず、
マウスジェスチャに登録して、それで起動すると起こるようです

266小さな名無しさん@この板は300レスまで:2011/10/09(日) 23:19:56 ID:3QN7RPc.
乙です
個人的に常時表示がありがたい

あと、>>260の不具合はマウスジェスチャの場合のみで、
ショートカットキーの場合は大丈夫なようです
というわけで、みんなもスクリプトパネルをショートカットキーに登録だ!

267 ◆SPNXXX34sg:2011/10/10(月) 00:11:20 ID:TE7yls26
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
トーンパネルの更新です
変更点はニ、ニトーンの追加とパネルのコンパクト化
あと入力した文字列をトーンとして使うモードでトーンの貼り方が最適でなかったのを修正

268 ◆SPNXXX34sg:2011/10/14(金) 23:56:13 ID:RUUs2wzs
ドットずらしスクリプトを更新しました
範囲選択した行をずらす機能を追加したので
全体ずらしスクリプト、強制左ずらしスクリプトの機能もこれだけでまかなえるようになりました
(つまり全て選択してからスクリプトを実行すれば全体ずらしスクリプトと同様に使える)
その分新規の人のとっつきは悪くなったかもだけど・・・
名前を新1dot右.epp、新1dot左.eppに改めてます

ダウンロードはこちら
ドットずらしスクリプトセット.zip
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo

269小さな名無しさん@この板は300レスまで:2011/10/15(土) 01:11:54 ID:6Sl.Tj5E
>>268
乙〜
範囲ずらし、これは便利

270 ◆SPNXXX34sg:2011/10/15(土) 02:10:39 ID:037KhwBg
>>268
少しだけ使用例を
↓のAAを左詰めすると・・・
         _/   i :{ ..::::::::::::::::::/  /    / ./´ , 1!   }  |   ハ
         ]  八,人 :::::::::::::::/  /    //   / リ   ;  ;  !     ,
         }  __(,. ≧=-=彡仏/    /´ ̄`ヽ/ /   / / |    ′
         |   ヽ         =ミ/    ,' 厶イ / /:,  7¨゚7ヽ |      i
         l   :V≦ニ=ニ二ミメi   i: /::: 抃、 /イ , / / |   | }   |
         j    (_,..二ニニ二.,_}|    |/込nソ   }/},仇7卞  j λ   L,_
         从    r≦     ミ/|    | `¨`      込nソ1  / }: }∠__彡
           }ハ  /'`゙'<三⊇} lハ  |,      '   `¨`/|  /1 .厶===ミ、
           ノ/     `ヾハ} `\|::\  r  マ    イ[:! ,/.::|: /‐-=≠'   Y
        .        r==ニ≦='′ //\| ` `__,. -=≦ヽ _|/ .:|/    -‐=孑′
                 ̄`ヾ`ヽ_,xく \ \    |/ .// i/Y⌒ヽー-=-‐≦..,

こんな↓感じになりますが・・・
.::::::/  /    / ./´ , 1!   }  |   ハ
゙:::/  /    //   / リ   ;  ;  !     ,
...゙仏/    /´ ̄`ヽ/ /   / / |    ′
.゙=ミ/    ,' 厶イ / /:,  7¨゚7ヽ |      i
_ミメi   i: /::: 抃、 /イ , / / |   | }   |
 ,_}|    |/込nソ   }/},仇7卞  j λ   L,_
. ミ/|    | `¨`      込nソ1  / }: }∠__彡
.....} lハ  |,      '   `¨`/|  /1 .厶===ミ、
..゙ハ} `\|::\  r  マ    イ[:! ,/.::|: /‐-=≠'   Y
.゙='′ //\| ` `__,. -=≦ヽ _|/ .:|/    -‐=孑′
゙ヽ_,xく \ \    |/ .// i/Y⌒ヽー-=-‐≦..,

ここから少し右に寄せ直すことで少々汚い「_」「゙」を除去できます↓
  :::::/  /    / ./´ , 1!   }  |   ハ
. :::/  /    //   / リ   ;  ;  !     ,
.... 仏/    /´ ̄`ヽ/ /   / / |    ′
.. =ミ/    ,' 厶イ / /:,  7¨゚7ヽ |      i
.....ミメi   i: /::: 抃、 /イ , / / |   | }   |
.......,_}|    |/込nソ   }/},仇7卞  j λ   L,_
......ミ/|    | `¨`      込nソ1  / }: }∠__彡
.  } lハ  |,      '   `¨`/|  /1 .厶===ミ、
... ハ} `\|::\  r  マ    イ[:! ,/.::|: /‐-=≠'   Y
.. ='′ //\| ` `__,. -=≦ヽ _|/ .:|/    -‐=孑′
. ヽ_,xく \ \    |/ .// i/Y⌒ヽー-=-‐≦..,

まあピリオド連打は相当右に戻さない限り出るので綺麗になったかどうかは微妙ですが、
以前の全体ずらしスクリプトではできなかった事なので一応紹介

いい忘れてましたが詳しい使い方は同梱のReadMeを参照のこと

271小さな名無しさん@この板は300レスまで:2011/10/15(土) 11:58:08 ID:ChtmL9HQ
キャレットって何?

272小さな名無しさん@この板は300レスまで:2011/10/15(土) 12:14:27 ID:6Sl.Tj5E
>>271
点滅する「|」の形をした、キーを打つとそこに文字が入力される場所を示すやつ

273小さな名無しさん@この板は300レスまで:2011/10/15(土) 12:17:27 ID:ItHvyyeQ
猫缶とかカーソルとか

274小さな名無しさん@この板は300レスまで:2011/10/15(土) 12:45:18 ID:ujuSSkW6
ちょっと細かいところですが、要望を
ttps://sites.google.com/site/spnxxxx/-d-editsukuriputo
このDLページですが、完全下位互換の物を覗いたまとめzipを置いておいてくれれば新規の人も入りやすくなるんでないかなと思います

275 ◆SPNXXX34sg:2011/10/15(土) 17:41:56 ID:037KhwBg
>>274
そうですね
数が増えてわかりにくくなってきたので近々ちゃんと整理しようと思います

276小さな名無しさん@この板は300レスまで:2011/10/15(土) 18:10:23 ID:ChtmL9HQ
>>272
なるほど

277 ◆2MbZnrMECE:2011/10/15(土) 20:50:15 ID:MGVWd5zY

枠入力ボタンとスクリプトパネル更新しました。


■枠/フキダシ入力ボタン
ttp://dl.dropbox.com/u/37791434/FrameInputButton.zip
ttp://dl.dropbox.com/u/37791434/FrameInputButton.epp
(スクリプト単体)

[変更内容]

・ 右パーツが空のときの横幅を増やす処理がおかしかったのを修正
・ ファイルタブを何も開いてない時ボタンを押すと強制終了するのを対策した
・ Ctrl + クリックで閉じる操作追加
・ Shift + クリックで選択中のファイルを開く操作追加



■お気に入りボタン付きスクリプトパネル
ttp://dl.dropbox.com/u/37791434/ScriptPanel02.zip

[変更内容]

 各種操作を追加

  ・ 実行ボタンCtrl + クリック → パネルを閉じる
  ・ 開くボタンShift + クリック → スクリプト一覧再読込
  ・ お気に入りボタンShift + クリック → スクリプトを登録
  ・ お気に入りボタンCtrl + Shift + クリック → 登録解除



※注意
各閉じる操作はあくまで緊急用なので、普段は使わないでください。
閉じたまま(´д`)Editを終了するとエラーが発生してしまいます。

278小さな名無しさん@この板は300レスまで:2011/10/15(土) 21:48:26 ID:n4Fbs5qo
お気に入りボタンも10個→5個に変更になったのでしょうか?

279 ◆2MbZnrMECE:2011/10/15(土) 22:09:24 ID:MGVWd5zY
デフォルトは5個表示ですが、設定で PanelLine に「3」を指定すると10個になります。

280小さな名無しさん@この板は300レスまで:2011/10/15(土) 22:53:43 ID:n4Fbs5qo
設定変更出来ました。説明ありがとうございます。

281 ◆2MbZnrMECE:2011/10/22(土) 08:14:45 ID:Vr3RHtt6

ズレない矩形貼付けをちょいと改良。
ttp://dl.dropbox.com/u/37791434/BoxPasteOver.epp


[変更点]

 ・ AAの周囲を白抜きする機能を追加
  → 指定した幅のスペース分だけ、貼り付けるAAの左右に余白を作れるようにした。

 ・ 調整ドットの判定を変更
  → 髪のトーンなどAAの一部であるピリオドも消されてしまうことがあったので、
    行頭にあるピリオドだけを調製ドットとみなすようにした。




・ 白抜きについて

 下のような感じで、貼り付けたAA(渡世AA人で言う上絵)の左右に、下絵を削って余白を作ります。
 余白の幅は、スクリプトファイルを開いて先頭の設定エリア「EdgeSp」で指定してください。


━【従来型】━━━━━━━━━━━━━━━━━━━━━━━━━━━
ヽ;;;;ゝヾ;ゞ::::ゞヾヽ;;;;ゝヾ;;ヽ;;;;ゝヾ;ヽ;;;;ゝヾ;ゞ::::ゞヾヽ;;;;ゝ;ゝヾ;ゞ::::ゞヾヽ;;;;ゝヾ;;ヽ
ゞ;;;;ゝヾ; ;;;ソ ヽ;;  ;;ゝ ヾ;;;;ヽヾゝゞゞ;;;;ゝヾ; ;;;ソ ヽ;; ゝヾ; ;;;ソ ヽ;;  ;;ゝ ヾ;;;
 ゞヾ ゞヾヽ ヽヾ;;ヽ;;;;ゝヾヾ; ゞヾ ゞヾヽ ヽヾ;;ヽ;;;;; ゞヾ ゞヾヽ ヽヾ;;ヽ;;;;
ゞヾ;;;ゝヽヾ ;;;;ゝヾ;;ゝヾ ヽゞヾ;;;ゝヽヾ ;;;;ゝヾ;;ゝヾ ヽゞヾ;;;ゝヽヾ ;;;;ゝヾ;;ゝヾ
 ;ゝヽ;;|;il|ヽソ;;|il|;ヽゞ|il:ヾ;;;ゝ;;: ヽ;;|;il|ヽソ;;|il|;ヽゞ|il:ヾ;; ヽゝヽ;;|;il|ヽソ;;|il|;ヽゞ|il:ヾ
    |;il|   |il| ヾ:|il,,,..,,,    |;il|   |il| ヾ:|il,,,..,,,    |;il|   |il| ヾ:|il,,,..
    |;il|   |il| ヾ:|il,,,..,,,    |;il|   |il, − -..,,,    |;il|   |il| ヾ:|il,,,..
    |;il| ,,((;;;ゝ);;));ヾ;;)    |;il| ,,( /  (● ●::))   |;il|   |il|(;;;ミ:;ヾ;;;)
、,,;;;ゝ;;))ゝ;;;ゝ))ゝ;;;ミ,,、,,;;;ゝ;;))ゝ;;;ゝ))ゝ;;;/^)(__人)^) .;;))ゝ;;;ゝ);;;ゝヾ;ヾ⌒;;)
ゞ((;;;ゝヾ;ヾ⌒;;;) ;;;)ヾミゞ((;;;ゝヾ;ヾ⌒;;__ヽ     /.....;;;) ;;;)ヾミゞ((;;;ゝヾ;ヾ
:;;;;;ゝヾ;ヽソ;;;)ヾミ;ソ(;;;ゝヾ;))ゝ;ミ;;(::;ゝ;;;..(__   〈 ミ;ソ(;;;ゝヾ;))ゝ;ミ;:;;:ゝヾ;ヽソ;
'"''"`"´"''"''"`"´"''"''"`"´"''"''"`"´"''"''"`"´. ヽ_).`"´"''"''"`"´"''"''"`"´"''
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━




━【改良版】━━━━━━━━━━━━━━━━━━━━━━━━━━━
ヽ;;;;ゝヾ;ゞ::::ゞヾヽ;;;;ゝヾ;;ヽ;;;;ゝヾ;ヽ;;;;ゝヾ;ゞ::::ゞヾヽ;;;;ゝ;ゝヾ;ゞ::::ゞヾヽ;;;;ゝヾ;;ヽ
ゞ;;;;ゝヾ; ;;;ソ ヽ;;  ;;ゝ ヾ;;;;ヽヾゝゞゞ;;;;ゝヾ; ;;;ソ ヽ;; ゝヾ; ;;;ソ ヽ;;  ;;ゝ ヾ;;;
 ゞヾ ゞヾヽ ヽヾ;;ヽ;;;;ゝヾヾ; ゞヾ ゞヾヽ ヽヾ;;ヽ;;;;; ゞヾ ゞヾヽ ヽヾ;;ヽ;;;;
ゞヾ;;;ゝヽヾ ;;;;ゝヾ;;ゝヾ ヽゞヾ;;;ゝヽヾ ;;;;ゝヾ;;ゝヾ ヽゞヾ;;;ゝヽヾ ;;;;ゝヾ;;ゝヾ
 ;ゝヽ;;|;il|ヽソ;;|il|;ヽゞ|il:ヾ;;;ゝ;;: ヽ;;|;il|ヽソ;;|il|;ヽゞ|il:ヾ;; ヽゝヽ;;|;il|ヽソ;;|il|;ヽゞ|il:ヾ
    |;il|   |il| ヾ:|il,,,..,,,    |;il|   |il| ヾ:|il,,,..,,,    |;il|   |il| ヾ:|il,,,..
    |;il|   |il| ヾ:|il,,,..,,,    |;il|     , − -       |;il|   |il| ヾ:|il,,,..
    |;il| ,,((;;;ゝ);;));ヾ;;)    |;il   /  (● ●    .|;il|   |il|(;;;ミ:;ヾ;;;)
、,,;;;ゝ;;))ゝ;;;ゝ))ゝ;;;ミ,,、,,;;;ゝ;;))ゝ;;;ゝ     /^)(__人)^)   .;;;ゝ);;;ゝヾ;ヾ⌒;;)
ゞ((;;;ゝヾ;ヾ⌒;;;) ;;;)ヾミゞ((;;;ゝヾ;   __ヽ     /    ;;;)ヾミゞ((;;;ゝヾ;ヾ
:;;;;;ゝヾ;ヽソ;;;)ヾミ;ソ(;;;ゝヾ;))ゝ;ミ;;(:   (__   〈    .;;;ゝヾ;))ゝ;ミ;:;;:ゝヾ;ヽソ;
'"''"`"´"''"''"`"´"''"''"`"´"''"''"`"´"''"''    ヽ_)    .''"''"`"´"''"''"`"´"''
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

282小さな名無しさん@この板は300レスまで:2011/10/23(日) 11:21:47 ID:tdMGkTbc
お、これは痒いところに手が届く感じで便利

283小さな名無しさん@この板は300レスまで:2011/10/30(日) 09:47:00 ID:HAxtkV/s
それにしてもこーいうスクリプト作る人はすごいのう

284小さな名無しさん@この板は300レスまで:2011/11/07(月) 17:58:48 ID:sM/vnwUQ
皆さん乙です! どのスクリプトも便利すぎて筆が進む。

スクリプトをいっぱい入れてたら例外が発生云々と出て何もできなくなった。
整理しようとしたときにScript/Libraryフォルダ内に空のフォルダを作っていたのが原因だった。
こんなバカをするのは自分だけかもだけど皆さんも気をつけてね。

285 ◆2MbZnrMECE:2011/11/12(土) 12:41:29 ID:onzDNaQU
期待。

ttp://jbbs.livedoor.jp/bbs/read.cgi/otaku/12973/1319730273/400-425

286 ◆2MbZnrMECE:2011/11/12(土) 12:41:43 ID:onzDNaQU
ところで、スクリプトも増えてきたんで、整理してダウンロードページを作ってみました。

ttp://dl.dropbox.com/u/37791434/EditScript.html



自分でも何のために作ったか良く分からない誰得スクリプトや下位互換品は外し、
ある程度需要のありそうなものだけを選別して載せてます。

とりえあえずはこの中から、自分に必要そうなものをチョイスすれば事足りるかと思います。

287 ◆2MbZnrMECE:2011/11/12(土) 12:41:58 ID:onzDNaQU

いくつかは最後に投下したときから更新していますが、それなりに手を加えたものだけ
更新情報を載せときます。これらを使ってる人は最新版に差し替え推奨です。


------------------------------------------------------


■文字AA入力支援
ttp://dl.dropbox.com/u/37791434/FontAAHelper.zip


[変更点]

・ドットの出現する数とズレる可能性が減ったかもしれない気がする。

・スペースを作る方式を選択できるようにした。

・上述に伴い、使用には Spacer.epu が必要になった。

・[挿入]ボタンを押すと同時に編集画面にフォーカスを移動するようにした。

・多重起動を禁止した。

・AAファイルを追加。

・ヘルプファイルを同梱。

288 ◆2MbZnrMECE:2011/11/12(土) 12:42:13 ID:onzDNaQU

■枠/フキダシ入力ボタン
ttp://dl.dropbox.com/u/37791434/FrameInputButton.zip


[変更点]

・外観を似非フラットボタン風味にした。(これに伴い、アイコンも一緒に差し替え推奨)

・設定ダイアログから設定できるようにした(右クリック->設定 or Alt+クリック)。

・他、こまごまと修正。

289 ◆2MbZnrMECE:2011/11/12(土) 12:42:28 ID:onzDNaQU

■したらばBBS用テキストサイズチェック
・単ページ用
ttp://dl.dropbox.com/u/37791434/SizeCheck.epp

・全ページ一括
ttp://dl.dropbox.com/u/37791434/SizeCheckAll.epp


[変更点]

・チェックの方法を変えて処理を高速化。
 →単ページではあまり違いは分かりませんが、100レス以上あるmltだと相当速くなってるはず。

・一括の方で、いままでStory形式(mlt、ast等のフォーマット)しか動作しなかったのを、
 単ページのテキストファイルでもチェック可能にした。

・一括の方で、チェック完了後に容量オーバーのページのうち、一番先頭のページにジャンプできるようにした。

290 ◆2MbZnrMECE:2011/11/12(土) 12:42:42 ID:onzDNaQU

■全自動投下ツール
ttp://dl.dropbox.com/u/37791434/AutoDrop.zip


[変更点]

・設定をiniファイルで行なうようにした。設定項目も多少きめ細かくなった。

・↑に伴い、多分だいたいの専ブラに対応出来るようになったかもしれない。

・exe化してAutoHotkeyをインストールしてなくても使えるようにした。


※使用に際しては、Readmeをよく読んだ上で!

------------------------------------------------------


以上です。

291小さな名無しさん@この板は300レスまで:2011/11/12(土) 15:46:11 ID:pj4wJEI.
来た!自動投下ツール来た!これで勝つる!

292小さな名無しさん@この板は300レスまで:2011/11/12(土) 16:04:59 ID:pj4wJEI.
あら、連続書き込みするには同じスレをアクティブにしてないといけないのかな?

293小さな名無しさん@この板は300レスまで:2011/11/12(土) 16:05:09 ID:pj4wJEI.
あ、スレじゃない。専ブラでした

294小さな名無しさん@この板は300レスまで:2011/11/12(土) 16:06:55 ID:L/cIa5e.
自分もちょっと試しましたが、たぶんそんな気がしますね
そろそろ次スレ?

295小さな名無しさん@この板は300レスまで:2011/11/12(土) 16:31:52 ID:pj4wJEI.
んーむ、PCで他のことがやりづらいのは変わらないか

296 ◆2MbZnrMECE:2011/11/15(火) 23:25:59 ID:mzOsQsZA
次スレお待ち

ttp://jbbs.livedoor.jp/bbs/read.cgi/otaku/14504/1321366974/



>>291-295
背後で動作するバージョンですか。やって出来ないことはなさそうというか、
試しに作ってみたら出来たけど、なんヤバそうな気がするんで
公開はしないで自分だけでコッソリ使うことにします!


残りは適当に埋めます。

297 ◆2MbZnrMECE:2011/11/15(火) 23:27:20 ID:mzOsQsZA

_,.ヘ.__人_,.イ_,.ィ
. ポ お . プ‘ーィ
. ス . 前 リ   L_
.. ト .の ン  .く_       , -'"  ̄ ` 丶、  /    や 投 お
. に 実 .ト    `=-   /         \|     .っ 下 前
. な . 家 ア   . (_  . /            |     た .し . の
. ! の ウ   L_ . i   _ _     _ _   ヽ_  ぜ . と .ス
        ト     く  | /二`     "二ヽ、 |  〉 ! い . レ
.      し    `=-_|  _,ィiュミ   r_,ィiュミ  レ-|    て . 代
.       て   . (_ ヾ!   - ' r  `ヽ  ̄´  | ∧     わ
/⌒'^´ヽ'⌒ヽ「⌒´   ゙!  〃  ^ ^  ヽ   l-/  〉    .り
  ま             i   { ='"三二T冫  /´_ノ/\_..に
  さ  二ニ    _,ィヘ  ヽ ヾ== 彳   /:::/`ー- 、
  に     _, ィ´:::::/ l\ ト、 ー一 / /::/      \
  外     /  |::::::::: ̄ ̄ ̄::`ー=彳_∠ _      ヽ
  道   /   |::::::::::::::::::::::::::::(‥):::〈_     \       l
     r'"`丶、 |:::::::::/:::/::::´:::::::::::::::::(_     ト、      |
 _/ / `ー 、 \|::::/:::::/:::::::::::::::::::::::::::(_      \   \

298 ◆2MbZnrMECE:2011/11/15(火) 23:27:35 ID:mzOsQsZA

_,.ヘ.__人_,.イ_,.ィ
        ‘ーィ
.. 俺  全   .L_
.. だ  . 部  ..く_       , -'"  ̄ ` 丶、  /    よ .貰 初
.. け  . ID    .`=-   /         \|    か .っ め
 . ど  変   ..(_  . /            |    .っ た . て
  な  . え      L_ . i   _ _     _ _   ヽ_  た ?  2
.. !  た    .く  | /二`     "二ヽ、 |  〉 な    .ケ
             `=-_|  _,ィiュミ   r_,ィiュミ  レ-|.. !    . タ
            .(_ ヾ!   - ' r  `ヽ  ̄´  | ∧ .       乙
/⌒'^´ヽ'⌒ヽ「⌒´   ゙!  〃  ^ ^  ヽ   l-/  〉
  ま             i   { ='"三二T冫  /´_ノ/\_
  さ  二ニ    _,ィヘ  ヽ ヾ== 彳   /:::/`ー- 、
  に     _, ィ´:::::/ l\ ト、 ー一 / /::/      \
  外     /  |::::::::: ̄ ̄ ̄::`ー=彳_∠ _      ヽ
  道   /   |::::::::::::::::::::::::::::(‥):::〈_     \       l
     r'"`丶、 |:::::::::/:::/::::´:::::::::::::::::(_     ト、      |
 _/ / `ー 、 \|::::/:::::/:::::::::::::::::::::::::::(_      \   \

299 ◆2MbZnrMECE:2011/11/15(火) 23:27:50 ID:mzOsQsZA

 −-                 , -'"  ̄ ` 丶、  /..   全 乙 ち
 ─--            /         \|    部 . と .な
              /            |    俺 合 み
 ───           i   _ _     _ _   ヽ_  だ い . に
  ̄ ̄         | /二`     "二ヽ、 |  〉 か の 今
             _|  _,ィiュミ   r_,ィiュミ  レ-|..... ら 手 . ま
 二二二         ヾ!   - ' r  `ヽ  ̄´  | ∧...! も. で
 ── ___      ゙!  〃  ^ ^  ヽ   l-/  〉       の
  ま             i   { ='"三二T冫  /´_ノ/\__
  さ  二ニ    _,ィヘ  ヽ ヾ== 彳   /:::/`ー- 、
  に     _, ィ´:::::/ l\ ト、 ー一 / /::/      \
  外     /  |::::::::: ̄ ̄ ̄::`ー=彳_∠ _      ヽ
  道   /   |::::::::::::::::::::::::::::(‥):::〈_     \       l
     r'"`丶、 |:::::::::/:::/::::´:::::::::::::::::(_     ト、      |
 _/ / `ー 、 \|::::/:::::/:::::::::::::::::::::::::::(_      \   \

300 ◆2MbZnrMECE:2011/11/15(火) 23:28:08 ID:mzOsQsZA
>>1000なら自動で書き溜めしてくれるスクリプトを作る

■掲示板に戻る■ ■過去ログ倉庫一覧■