OSDN Git Service

happiness
authoryamat0jp <yamat0jp@yahoo.co.jp>
Sat, 25 Sep 2021 06:09:40 +0000 (15:09 +0900)
committeryamat0jp <yamat0jp@yahoo.co.jp>
Sat, 25 Sep 2021 06:09:40 +0000 (15:09 +0900)
Undo.pas
Unit1.dfm
Unit1.pas
json_checker.dproj

index 2d47076..53602f2 100644 (file)
--- a/Undo.pas
+++ b/Undo.pas
@@ -11,6 +11,7 @@ type
     FMemo: TCustomMemo;
   public
     procedure Execute; virtual; abstract;
+    procedure ReDo; virtual; abstract;
   end;
 
   TUnInput = class(TUndoBase)
@@ -18,6 +19,7 @@ type
     FData: Char;
   public
     procedure Execute; override;
+    procedure ReDo; override;
   end;
 
   TUnDelete = class(TUndoBase)
@@ -26,27 +28,33 @@ type
     FTop: Boolean;
   public
     procedure Execute; override;
+    procedure ReDo; override;
   end;
 
   TUnPaste = class(TUndoBase)
   private
     FLen: integer;
+    FStr: string;
   public
     procedure Execute; override;
+    procedure ReDo; override;
   end;
 
   TUnRETURN = class(TUndoBase)
   public
     procedure Execute; override;
+    procedure ReDo; override;
   end;
 
   TUndoClass = class(TComponent)
   private
     FStack: TObjectStack;
+    FReStack: TObjectStack;
     FMemo: TCustomMemo;
     FCnt: integer;
     function GetCanUndo: Boolean;
     procedure Clear;
+    procedure DelRedoStack;
     procedure SetMemo(const Value: TCustomMemo);
   public
     constructor Create(AOwner: TComponent); override;
@@ -55,6 +63,7 @@ type
     procedure Returned(pos: integer);
     procedure Pasted(const str: string; pos: integer);
     procedure Execute;
+    procedure ReDo;
     destructor Destroy; override;
     procedure UpCount;
     procedure ResetCnt;
@@ -73,18 +82,22 @@ var
 begin
   for i := 0 to FStack.Count - 1 do
     FStack.Pop.Free;
+  for i := 0 to FReStack.Count - 1 do
+    FReStack.Pop.Free;
 end;
 
 constructor TUndoClass.Create(AOwner: TComponent);
 begin
   inherited;
   FStack := TObjectStack.Create;
+  FReStack := TObjectStack.Create;
 end;
 
 procedure TUndoClass.Deleted(const str: string; pos: integer; top: Boolean);
 var
   obj: TUnDelete;
 begin
+  DelRedoStack;
   obj := TUnDelete.Create;
   obj.FStr := str;
   obj.FPos := pos;
@@ -93,10 +106,20 @@ begin
   FStack.Push(obj);
 end;
 
+procedure TUndoClass.DelRedoStack;
+var
+  i: integer;
+begin
+  if FReStack.Count > 0 then
+    for i := 1 to FReStack.Count do
+      FReStack.Pop.Free;
+end;
+
 destructor TUndoClass.Destroy;
 begin
   Clear;
   FStack.Free;
+  FReStack.Free;
   inherited;
 end;
 
@@ -108,7 +131,7 @@ begin
   begin
     obj := FStack.Pop as TUndoBase;
     obj.Execute;
-    obj.Free;
+    FReStack.Push(obj);
   end;
 end;
 
@@ -121,16 +144,19 @@ procedure TUndoClass.Inputted(c: Char; pos: integer);
 var
   data: TUnPaste;
 begin
+  DelRedoStack;
   if (FCnt > 0) and (FStack.Count > 0) and (FStack.Peek is TUnPaste) then
   begin
     data := FStack.Peek as TUnPaste;
     data.FLen := data.FLen + 1;
+    data.FStr := data.FStr + c;
   end
   else
   begin
     data := TUnPaste.Create;
     data.FPos := pos;
     data.FLen := 1;
+    data.FStr := c;
     data.FMemo := FMemo;
     FStack.Push(data);
   end;
@@ -140,6 +166,7 @@ procedure TUndoClass.Pasted(const str: string; pos: integer);
 var
   obj: TUnPaste;
 begin
+  DelRedoStack;
   obj := TUnPaste.Create;
   obj.FPos := pos;
   obj.FLen := Length(str);
@@ -147,6 +174,18 @@ begin
   FStack.Push(obj);
 end;
 
+procedure TUndoClass.ReDo;
+var
+  obj: TUndoBase;
+begin
+  if FReStack.Count > 0 then
+  begin
+    obj := FReStack.Pop as TUndoBase;
+    obj.ReDo;
+    FStack.Push(obj);
+  end;
+end;
+
 procedure TUndoClass.ResetCnt;
 begin
   FCnt := 0;
@@ -156,6 +195,7 @@ procedure TUndoClass.Returned(pos: integer);
 var
   obj: TUnRETURN;
 begin
+  DelRedoStack;
   obj := TUnRETURN.Create;
   obj.FPos := pos;
   obj.FMemo := FMemo;
@@ -209,6 +249,16 @@ begin
   end;
 end;
 
+procedure TUnDelete.ReDo;
+begin
+  if FMemo <> nil then
+  begin
+    FMemo.SelStart := FPos;
+    FMemo.SelLength := Length(FStr);
+    FMemo.SelText := '';
+  end;
+end;
+
 { TUnPaste }
 
 procedure TUnPaste.Execute;
@@ -221,6 +271,17 @@ begin
   end;
 end;
 
+procedure TUnPaste.ReDo;
+begin
+  if FMemo <> nil then
+  begin
+    FMemo.SelStart := FPos;
+    FMemo.SelText := FStr;
+    FMemo.SelLength := FLen;
+    FMemo.SelStart := FPos + FLen;
+  end;
+end;
+
 { TUnInput }
 
 procedure TUnInput.Execute;
@@ -232,12 +293,16 @@ begin
   end;
 end;
 
+procedure TUnInput.ReDo;
+begin
+
+end;
+
 { TUnRETURN }
 
 procedure TUnRETURN.Execute;
 var
   i: integer;
-  s: string;
 begin
   if FMemo <> nil then
   begin
@@ -245,7 +310,16 @@ begin
     i := FMemo.CaretPos.Y;
     FMemo.Lines[i] := FMemo.Lines[i] + FMemo.Lines[i + 1];
     FMemo.Lines.Delete(i + 1);
-    FMemo.SelStart:=FPos;
+    FMemo.SelStart := FPos;
+  end;
+end;
+
+procedure TUnRETURN.ReDo;
+begin
+  if FMemo <> nil then
+  begin
+    FMemo.SelStart := FPos;
+    FMemo.SelText := #13#10;
   end;
 end;
 
index 5c9021a..d859d89 100644 (file)
--- a/Unit1.dfm
+++ b/Unit1.dfm
@@ -73,7 +73,7 @@ object Form1: TForm1
       Left = 56
       Top = 0
       Action = Action3
-      ImageIndex = 2
+      ImageIndex = 4
     end
     object ToolButton10: TToolButton
       Left = 79
@@ -83,16 +83,22 @@ object Form1: TForm1
       ImageIndex = 4
       Style = tbsSeparator
     end
-    object ToolButton4: TToolButton
+    object ToolButton11: TToolButton
       Left = 87
       Top = 0
+      Action = Action5
+      ImageIndex = 1
+    end
+    object ToolButton4: TToolButton
+      Left = 110
+      Top = 0
       Width = 33
       Caption = 'ToolButton4'
       ImageIndex = 1
       Style = tbsSeparator
     end
     object ToolButton6: TToolButton
-      Left = 120
+      Left = 143
       Top = 0
       Width = 8
       Caption = 'ToolButton6'
@@ -100,15 +106,15 @@ object Form1: TForm1
       Style = tbsSeparator
     end
     object ToolButton5: TToolButton
-      Left = 128
+      Left = 151
       Top = 0
       Hint = 'Help'
       Caption = 'ToolButton5'
-      ImageIndex = 1
+      ImageIndex = 3
       OnClick = ToolButton5Click
     end
     object ToolButton7: TToolButton
-      Left = 151
+      Left = 174
       Top = 0
       Width = 8
       Caption = 'ToolButton7'
@@ -187,6 +193,7 @@ object Form1: TForm1
       Width = 185
       Height = 89
       Lines.Strings = (
+        #12522#12489#12453#27231#33021#12434#36861#21152
         #12450#12531#12489#12453#12434#28145#12367#32368#12426#36820#12379#12427
         #22806#35251#12434#22793#26356
         'TJSONArray '#12395#23550#24540#12375#12414#12375#12383' '
@@ -212,63 +219,132 @@ object Form1: TForm1
     Left = 200
     Top = 88
     Bitmap = {
-      494C010104000800680010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
+      494C0101060008007C0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
       0000000000003600000028000000400000002000000001002000000000000020
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000FF000000FF000000FF000000FF000000FF00000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000FFFFFF008080800080808000808080008080800080808000FFFFFF00FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF00000000000000000000000000000000000000000000000000000000008080
+      8000808080008080800000000000000000000000000080808000808080008080
+      8000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000FF000000
+      FF000000000000000000000000000000000000000000000000000000FF000000
+      FF000000FF000000000000000000000000000000000000000000808080008080
+      8000FFFFFF00FFFFFF0000000000000000000000000000000000000000008080
+      800080808000FFFFFF00FFFFFF00000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000FF000000FF000000
+      FF000000FF000000000000000000000000000000000000000000000000000000
+      FF000000FF000000FF0000000000000000000000000080808000808080008080
+      800080808000FFFFFF00FFFFFF00000000000000000000000000000000000000
+      00008080800080808000FFFFFF00000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000FF00000000000000
+      FF000000FF000000FF0000000000000000000000000000000000000000000000
+      00000000FF000000FF0000000000000000000000000080808000FFFFFF008080
+      80008080800080808000FFFFFF00FFFFFF000000000000000000000000000000
+      00000000000080808000FFFFFF00FFFFFF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000FF000000FF00000000000000
+      00000000FF000000FF000000FF00000000000000000000000000000000000000
+      0000000000000000FF000000FF00000000008080800080808000FFFFFF000000
+      0000808080008080800080808000FFFFFF00FFFFFF0000000000000000000000
+      0000000000008080800080808000FFFFFF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000FF000000FF00000000000000
+      0000000000000000FF000000FF000000FF000000000000000000000000000000
+      0000000000000000FF000000FF00000000008080800080808000FFFFFF000000
+      000000000000808080008080800080808000FFFFFF00FFFFFF00000000000000
+      0000000000008080800080808000FFFFFF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000FF000000FF00000000000000
+      000000000000000000000000FF000000FF000000FF0000000000000000000000
+      0000000000000000FF000000FF00000000008080800080808000FFFFFF000000
+      00000000000000000000808080008080800080808000FFFFFF00FFFFFF000000
+      0000000000008080800080808000FFFFFF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000FF000000FF00000000000000
+      00000000000000000000000000000000FF000000FF000000FF00000000000000
+      0000000000000000FF000000FF00000000008080800080808000FFFFFF000000
+      0000000000000000000000000000808080008080800080808000FFFFFF00FFFF
+      FF00000000008080800080808000FFFFFF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000FF000000FF00000000000000
+      0000000000000000000000000000000000000000FF000000FF000000FF000000
+      0000000000000000FF000000FF00000000008080800080808000FFFFFF00FFFF
+      FF0000000000000000000000000000000000808080008080800080808000FFFF
+      FF00FFFFFF008080800080808000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000FF000000FF000000
+      000000000000000000000000000000000000000000000000FF000000FF000000
+      FF00000000000000FF000000000000000000000000008080800000000000FFFF
+      FF00FFFFFF000000000000000000000000000000000080808000808080008080
+      8000FFFFFF0080808000FFFFFF00000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000FF000000FF000000
+      FF000000000000000000000000000000000000000000000000000000FF000000
+      FF000000FF000000FF0000000000000000000000000080808000808080000000
+      0000FFFFFF00FFFFFF0000000000000000000000000000000000808080008080
+      8000808080008080800000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000000000000000000000000000000000000000FF000000
+      FF000000FF000000000000000000000000000000000000000000000000000000
+      FF000000FF000000000000000000000000000000000000000000808080008080
+      800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080
+      8000808080000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
+      FF00000000000000000000000000000000000000000000000000000000008080
+      8000808080008080800000000000000000000000000080808000808080008080
+      8000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000FF000000FF000000FF000000FF000000FF00000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      0000000000008080800080808000808080008080800080808000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
@@ -281,206 +357,137 @@ object Form1: TForm1
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000
       00000000000000000000000000000000000000000000FF00000080000000FFFF
       FF0000000000FFFFFF0080000000800000008000000000000000000000000000
       0000000000008000000080000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000000000000000000000000000000000000FFFF
+      FF00FFFFFF00FFFFFF000000000000000000FFFFFF00FFFFFF00000000000000
+      000000000000FFFFFF00FFFFFF00FFFFFF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000FF000000FF000000FF000000FF000000FF00000000000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      0000FFFFFF008080800080808000808080008080800080808000FFFFFF00FFFF
-      FF00FFFFFF0000000000000000000000000000000000FF000000FF0000000000
+      00000000000000000000000000000000000000000000FF000000FF0000000000
       0000FFFFFF0000000000800000000000000000000000BFBFBF00BFBFBF00BFBF
-      BF00BFBFBF000000000000000000000000008000000080000000FFFFFF000000
+      BF00BFBFBF0000000000000000000000000000000000000000000000FF000000
+      FF000000FF000000000000000000808080000000000080808000000000000000
+      00000000FF000000FF000000FF00000000000000000000000000808080008080
+      800080808000FFFFFF00FFFFFF000000000080808000FFFFFF00FFFFFF000000
+      0000808080008080800080808000000000008000000080000000FFFFFF000000
       00000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF000000
-      0000000000000000000000000000000000000000000000000000000000000000
-      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF00000000000000000000000000000000000000000000000000000000008080
-      8000808080008080800000000000000000000000000080808000808080008080
-      8000FFFFFF00FFFFFF00000000000000000000000000FF000000FF0000000000
+      00000000000000000000000000000000000000000000FF000000FF0000000000
       0000FFFFFF000000000000000000BFBFBF00BFBFBF00BFBFBF00BFBFBF000000
-      0000000000000000000000000000000000008000000080000000FFFFFF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      FF000000FF000000FF0000000000000000000000000000000000000000000000
+      FF000000FF000000FF0000000000000000000000000000000000000000008080
+      80008080800080808000FFFFFF00808080008080800080808000FFFFFF008080
+      8000808080008080800000000000000000008000000080000000FFFFFF000000
       000000FFFF00FFFFFF0000FFFF00FFFFFF000000000000000000000000000000
-      00000000000000000000000000000000000000000000000000000000FF000000
-      FF000000000000000000000000000000000000000000000000000000FF000000
-      FF000000FF000000000000000000000000000000000000000000808080008080
-      8000FFFFFF00FFFFFF0000000000000000000000000000000000000000008080
-      800080808000FFFFFF00FFFFFF000000000000000000FF000000FF000000FFFF
+      00000000000000000000000000000000000000000000FF000000FF000000FFFF
       FF000000000000000000BFBFBF00BFBFBF00BFBFBF0000000000000000007F7F
-      7F00BFBFBF00BFBFBF0000000000000000008000000080000000FFFFFF000000
-      0000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
-      FF00FFFFFF00000000000000000000000000000000000000FF000000FF000000
+      7F00BFBFBF00BFBFBF0000000000000000000000000000000000000000000000
+      00000000FF000000FF000000FF008080800000000000808080000000FF000000
       FF000000FF000000000000000000000000000000000000000000000000000000
-      FF000000FF000000FF0000000000000000000000000080808000808080008080
-      800080808000FFFFFF00FFFFFF00000000000000000000000000000000000000
-      00008080800080808000FFFFFF000000000000000000FF000000FF000000FF00
+      0000808080008080800080808000FFFFFF008080800000000000808080008080
+      8000808080000000000000000000000000008000000080000000FFFFFF000000
+      0000FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFFFF0000FF
+      FF00FFFFFF0000000000000000000000000000000000FF000000FF000000FF00
       000000000000BFBFBF00BFBFBF00BFBFBF00000000007F7F7F007F7F7F007F7F
-      7F00BFBFBF000000000080000000000000008000000080000000FFFFFF000000
+      7F00BFBFBF000000000080000000000000000000000000000000000000000000
+      0000000000000000FF000000FF000000FF00000000000000FF000000FF000000
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000008080800080808000808080000000000080808000808080008080
+      8000000000000000000000000000000000008000000080000000FFFFFF000000
       000000FFFF00FFFFFF0000FFFF00FFFFFF000000000000000000000000000000
-      000000000000000000000000000000000000000000000000FF00000000000000
-      FF000000FF000000FF0000000000000000000000000000000000000000000000
-      00000000FF000000FF0000000000000000000000000080808000FFFFFF008080
-      80008080800080808000FFFFFF00FFFFFF000000000000000000000000000000
-      00000000000080808000FFFFFF00FFFFFF0000000000FF000000FF0000000000
+      00000000000000000000000000000000000000000000FF000000FF0000000000
       0000FFFFFF00FFFFFF00BFBFBF00000000007F7F7F007F7F7F007F7F7F00BFBF
-      BF00BFBFBF000000000080000000000000008000000080000000FFFFFF000000
+      BF00BFBFBF000000000080000000000000000000000000000000000000000000
+      000000000000000000000000FF000000FF00000000000000FF000000FF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000000000000808080000000000080808000FFFFFF00808080000000
+      0000000000000000000000000000000000008000000080000000FFFFFF000000
       0000FFFFFF00000000000000000000000000FFFFFF0000FFFF00FFFFFF0000FF
-      FF00FFFFFF000000000000000000000000000000FF000000FF00000000000000
-      00000000FF000000FF000000FF00000000000000000000000000000000000000
-      0000000000000000FF000000FF00000000008080800080808000FFFFFF000000
-      0000808080008080800080808000FFFFFF00FFFFFF0000000000000000000000
-      0000000000008080800080808000FFFFFF0000000000FF000000FF0000000000
+      FF00FFFFFF0000000000000000000000000000000000FF000000FF0000000000
       0000FFFFFF00FFFFFF000000000000000000BFBFBF007F7F7F007F7F7F00BFBF
-      BF00000000008000000080000000000000008000000080000000FFFFFF000000
+      BF00000000008000000080000000000000000000000000000000000000000000
+      0000000000000000000000000000000080000000000000008000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000808080008080800080808000FFFFFF00FFFF
+      FF00000000000000000000000000000000008000000080000000FFFFFF000000
       000000FFFF000000000000FFFF00000000000000000000000000000000000000
-      000000000000FFFFFF0000000000000000000000FF000000FF00000000000000
-      0000000000000000FF000000FF000000FF000000000000000000000000000000
-      0000000000000000FF000000FF00000000008080800080808000FFFFFF000000
-      000000000000808080008080800080808000FFFFFF00FFFFFF00000000000000
-      0000000000008080800080808000FFFFFF0000000000FF00000000000000FFFF
+      000000000000FFFFFF00000000000000000000000000FF00000000000000FFFF
       FF00FFFFFF00000000007F7F7F007F7F7F00FFFFFF00BFBFBF007F7F7F000000
       0000800000008000000080000000000000000000000000000000000000000000
+      000000000000000000000000FF000000800000000000000080000000FF000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      000000000000000000000000000080808000808080008080800000000000FFFF
+      FF00FFFFFF000000000000000000000000000000000000000000000000000000
       0000FFFFFF0000000000FFFFFF00000000000000000000000000FFFFFF0000FF
-      FF00FFFFFF0000FFFF0000000000FFFFFF000000FF000000FF00000000000000
-      000000000000000000000000FF000000FF000000FF0000000000000000000000
-      0000000000000000FF000000FF00000000008080800080808000FFFFFF000000
-      00000000000000000000808080008080800080808000FFFFFF00FFFFFF000000
-      0000000000008080800080808000FFFFFF0000000000FF00000000000000FFFF
+      FF00FFFFFF0000FFFF0000000000FFFFFF0000000000FF00000000000000FFFF
       FF00FFFFFF00000000007F7F7F007F7F7F007F7F7F00FFFFFF00BFBFBF008000
       0000800000008000000080000000000000000000000000000000000000000000
+      0000000000000000FF000000FF000000000000000000000000000000FF000000
+      FF00000000000000000000000000000000000000000000000000000000000000
+      0000000000008080800000000000808080008080800080808000000000008080
+      8000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000
       0000000000000000000000FFFF00FFFFFF0000FFFF00FFFFFF0000FFFF00FFFF
-      FF0000FFFF0000000000FFFFFF00800000000000FF000000FF00000000000000
-      00000000000000000000000000000000FF000000FF000000FF00000000000000
-      0000000000000000FF000000FF00000000008080800080808000FFFFFF000000
-      0000000000000000000000000000808080008080800080808000FFFFFF00FFFF
-      FF00000000008080800080808000FFFFFF0000000000FF00000000000000FFFF
+      FF0000FFFF0000000000FFFFFF008000000000000000FF00000000000000FFFF
       FF00000000007F7F7F007F7F7F007F7F7F007F7F7F0000000000FFFFFF00BFBF
       BF00FFFFFF008000000080000000000000000000000000000000000000000000
+      00000000FF000000FF000000FF000000000000000000000000000000FF000000
+      FF000000FF000000000000000000000000000000000000000000000000000000
+      0000808080008080800000000000808080008080800080808000000000008080
+      800080808000FFFFFF00FFFFFF00000000000000000000000000000000000000
       000000000000000000000000000000000000FFFFFF0000FFFF00FFFFFF0000FF
-      FF0000000000FFFFFF0080000000800000000000FF000000FF00000000000000
-      0000000000000000000000000000000000000000FF000000FF000000FF000000
-      0000000000000000FF000000FF00000000008080800080808000FFFFFF00FFFF
-      FF0000000000000000000000000000000000808080008080800080808000FFFF
-      FF00FFFFFF0080808000808080000000000000000000FF00000000000000FFFF
+      FF0000000000FFFFFF00800000008000000000000000FF00000000000000FFFF
       FF00000000007F7F7F007F7F7F007F7F7F0000000000FF000000FF0000000000
       0000BFBFBF008000000080000000000000000000000000000000000000000000
+      FF000000FF000000FF0000000000000000000000000000000000000000000000
+      FF000000FF000000FF0000000000000000000000000000000000000000008080
+      8000808080008080800000000000808080008080800080808000FFFFFF008080
+      80008080800080808000FFFFFF00FFFFFF000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000FFFFFF00800000008000000080000000000000000000FF000000FF000000
-      000000000000000000000000000000000000000000000000FF000000FF000000
-      FF00000000000000FF000000000000000000000000008080800000000000FFFF
-      FF00FFFFFF000000000000000000000000000000000080808000808080008080
-      8000FFFFFF0080808000FFFFFF000000000000000000FF000000000000000000
+      0000FFFFFF0080000000800000008000000000000000FF000000000000000000
       00007F7F7F007F7F7F000000000000000000FF000000FF000000FFFFFF00BFBF
-      BF00FFFFFF008000000080000000000000000000000000000000000000000000
+      BF00FFFFFF0080000000800000000000000000000000000000000000FF000000
+      FF000000FF000000000000000000808080000000000080808000000000000000
+      00000000FF000000FF000000FF00000000000000000000000000808080008080
+      8000808080000000000000000000000000008080800000000000000000000000
+      0000808080008080800080808000000000000000000000000000000000000000
       000000000000000000000000000000000000000000000000000000000000FFFF
-      FF0080000000800000008000000080000000000000000000FF000000FF000000
-      FF000000000000000000000000000000000000000000000000000000FF000000
-      FF000000FF000000FF0000000000000000000000000080808000808080000000
-      0000FFFFFF00FFFFFF0000000000000000000000000000000000808080008080
-      80008080800080808000000000000000000000000000FF000000FF0000000000
+      FF008000000080000000800000008000000000000000FF000000FF0000000000
       00000000000000000000FF000000FF000000FF000000FF000000FF000000FF00
       0000FF000000FF00000080000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000080000000800000008000000000000000000000000000FF000000
-      FF000000FF000000000000000000000000000000000000000000000000000000
-      FF000000FF000000000000000000000000000000000000000000808080008080
-      800000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF008080
-      80008080800000000000000000000000000000000000FF000000FF000000FF00
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      00000000000080000000800000008000000000000000FF000000FF000000FF00
       0000FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF00
       0000FF000000FF000000FF000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000000000000000800000000000000000000000000000000000
-      FF000000FF000000FF000000FF000000FF000000FF000000FF000000FF000000
-      FF00000000000000000000000000000000000000000000000000000000008080
-      8000808080008080800000000000000000000000000080808000808080008080
-      8000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000000000FF000000FF000000FF000000FF000000FF00000000000000
+      0000000000000000000000000000800000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
+      0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      0000000000008080800080808000808080008080800080808000000000000000
-      000000000000000000000000000000000000424D3E000000000000003E000000
-      2800000040000000200000000100010000000000000100000000000000000000
-      000000000000000000000000FFFFFF0000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
       0000000000000000000000000000000000000000000000000000000000000000
-      00000000000000000000000000000000FFFFFFFFFFFFFC1F8001081FF83FF007
-      8001000FE00FE38380010007CFC7C3E18001000387E381F180010001A3F380F8
-      8001000131F910788001000038F91838800100003C791C188001F0003E391E08
-      8001FC003F190F018001FF009F8BA7818001FFC08FC393C38001FFE0C7E7C807
-      8001FFF8E00FE38FFFFFFFFEF83FF83F00000000000000000000000000000000
+      000000000000000000000000000000000000424D3E000000000000003E000000
+      2800000040000000200000000100010000000000000100000000000000000000
+      000000000000000000000000FFFFFF00FFFFFC1F00000000F83FF00700000000
+      E00FE38300000000CFC7C3E10000000087E381F100000000A3F380F800000000
+      31F910780000000038F91838000000003C791C18000000003E391E0800000000
+      3F190F01000000009F8BA781000000008FC393C300000000C7E7C80700000000
+      E00FE38F00000000F83FF83F00000000FFFFFFFFFFFFFFFF8001FFFFE338081F
+      8001C631C111000F8001E223E00300078001F007F04700038001F88FF88F0001
+      8001FC1FFD1F00018001FE3FFE0F00008001FC1FFE2700008001F80FFA23F000
+      8001F007F221FC008001E223E200FF008001C631C771FFC08001FFFFFFFFFFE0
+      8001FFFFFFFFFFF8FFFFFFFFFFFFFFFE00000000000000000000000000000000
       000000000000}
   end
   object ActionList1: TActionList
@@ -532,6 +539,11 @@ object Form1: TForm1
       ShortCut = 16470
       OnExecute = Action4Execute
     end
+    object Action5: TAction
+      Category = #32232#38598
+      Caption = 'ReDo'
+      OnExecute = Action5Execute
+    end
   end
   object PopupMenu1: TPopupMenu
     Left = 368
@@ -551,6 +563,9 @@ object Form1: TForm1
     object U1: TMenuItem
       Action = Action3
     end
+    object ReDo1: TMenuItem
+      Action = Action5
+    end
   end
   object MainMenu1: TMainMenu
     Left = 256
@@ -584,6 +599,9 @@ object Form1: TForm1
       object U2: TMenuItem
         Action = Action3
       end
+      object ReDo2: TMenuItem
+        Action = Action5
+      end
     end
     object N3: TMenuItem
       Caption = #12504#12523#12503
index 6c14800..c5d64cd 100644 (file)
--- a/Unit1.pas
+++ b/Unit1.pas
@@ -60,6 +60,10 @@ type
     Memo5: TMemo;
     Action3: TAction;
     Action4: TAction;
+    Action5: TAction;
+    ReDo1: TMenuItem;
+    ReDo2: TMenuItem;
+    ToolButton11: TToolButton;
     procedure ToolButton2Click(Sender: TObject);
     procedure ToolButton5Click(Sender: TObject);
     procedure TabControl1Change(Sender: TObject);
@@ -71,6 +75,7 @@ type
     procedure Action3Execute(Sender: TObject);
     procedure Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
     procedure Action4Execute(Sender: TObject);
+    procedure Action5Execute(Sender: TObject);
   private
     { Private \90é\8c¾ }
     procedure loop(item: TTreeNode; JSON: TJSONObject);
@@ -113,6 +118,11 @@ begin
   Undo.Pasted(Memo1.SelText, Memo1.SelStart);
 end;
 
+procedure TForm1.Action5Execute(Sender: TObject);
+begin
+  Undo.ReDo;
+end;
+
 procedure TForm1.arrloop(item: TTreeNode; arr: TJSONArray);
 var
   s: string;
index 348f24e..5ea5979 100644 (file)
@@ -5,7 +5,7 @@
         <FrameworkType>VCL</FrameworkType>
         <MainSource>json_checker.dpr</MainSource>
         <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
+        <Config Condition="'$(Config)'==''">Release</Config>
         <Platform Condition="'$(Platform)'==''">Win64</Platform>
         <TargetedPlatforms>3</TargetedPlatforms>
         <AppType>Application</AppType>