Ver código fonte

Cleanup and reduce diff to master and also fix a bug with VReopenTab.Visible. Also reduce the amount of extra memos to 10 instead of 52.

Martijn Laan 1 ano atrás
pai
commit
3ad9cfa909
4 arquivos alterados com 86 adições e 120 exclusões
  1. 15 15
      Components/NewTabSet.pas
  2. 2 5
      Projects/CompForm.dfm
  3. 59 84
      Projects/CompForm.pas
  4. 10 16
      Projects/CompFunc.pas

+ 15 - 15
Components/NewTabSet.pas

@@ -2,7 +2,7 @@ unit NewTabSet;
 
 
 {
 {
   Inno Setup
   Inno Setup
-  Copyright (C) 1997-2020 Jordan Russell
+  Copyright (C) 1997-2024 Jordan Russell
   Portions by Martijn Laan
   Portions by Martijn Laan
   For conditions of distribution and use, see LICENSE.TXT.
   For conditions of distribution and use, see LICENSE.TXT.
 
 
@@ -12,7 +12,7 @@ unit NewTabSet;
 interface
 interface
 
 
 uses
 uses
-  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Menus, Math, ModernColors;
+  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Math, ModernColors;
 
 
 type
 type
   TTabPosition = (tpTop, tpBottom);
   TTabPosition = (tpTop, tpBottom);
@@ -23,7 +23,7 @@ type
     FTabs: TStrings;
     FTabs: TStrings;
     FTabIndex: Integer;
     FTabIndex: Integer;
     FTabPosition: TTabPosition;
     FTabPosition: TTabPosition;
-    FTabsOffset : Integer;
+    FTabsOffset: Integer;
     FTheme: TTheme;
     FTheme: TTheme;
     function GetTabRect(Index: Integer): TRect;
     function GetTabRect(Index: Integer): TRect;
     procedure InvalidateTab(Index: Integer);
     procedure InvalidateTab(Index: Integer);
@@ -377,28 +377,28 @@ end;
 
 
 procedure TNewTabSet.EnsureCurrentTabIsFullyVisible;
 procedure TNewTabSet.EnsureCurrentTabIsFullyVisible;
 var
 var
-  rcTab, rcCtl, rcLast : TRect;
-  iExtra, iDelta, iNewOffset : Integer;
+  rcTab, rcCtl, rcLast: TRect;
+  iExtra, iDelta, iNewOffset: Integer;
 begin
 begin
   rcCtl := ClientRect;
   rcCtl := ClientRect;
   rcTab := GetTabRect(FTabIndex);
   rcTab := GetTabRect(FTabIndex);
 
 
-  { check and modify tabs offset so everything fits }
-  iExtra := Min( rcCtl.Width div 2, rcTab.Width * 4);  { arbitrary value, adjust as needed }
-  iDelta := rcTab.Width div 2;                         { arbitrary value, adjust as needed }
+  { Check and modify tabs offset so everything fits }
+  iExtra := Min(rcCtl.Width div 2, rcTab.Width * 4);  { arbitrary value, adjust as needed }
+  iDelta := rcTab.Width div 2;                        { arbitrary value, adjust as needed }
 
 
-  { left side is easy, limit is always 0 }
-  if rcTab.Left < (rcCtl.Left + iDelta) then begin
-    FTabsOffset := Max( 0, FTabsOffset - (rcCtl.Left - rcTab.Left) - iExtra);
+  { Left side is easy, limit is always 0 }
+  if rcTab.Left < rcCtl.Left + iDelta then begin
+    FTabsOffset := Max(0, FTabsOffset - rcCtl.Left - rcTab.Left - iExtra);
     Invalidate;
     Invalidate;
   end;
   end;
 
 
-  { right side limit depends on last tab and total available space }
-  if rcTab.Right > (rcCtl.Right - iDelta) then begin
+  { Right side limit depends on last tab and total available space }
+  if rcTab.Right > rcCtl.Right - iDelta then begin
     iNewOffset := FTabsOffset + (rcTab.Right - rcCtl.Right) + iExtra;
     iNewOffset := FTabsOffset + (rcTab.Right - rcCtl.Right) + iExtra;
-    FTabsOffset := 0; { we need the last tabs leftmost position w/o any offset }
+    FTabsOffset := 0; { We need the last tabs leftmost position w/o any offset }
     rcLast := GetTabRect(FTabs.Count-1);
     rcLast := GetTabRect(FTabs.Count-1);
-    FTabsOffset := Max( 0, Min( iNewOffset, rcLast.Right - rcCtl.Width + 10));
+    FTabsOffset := Max(0, Min(iNewOffset, rcLast.Right - rcCtl.Width + 10));
     Invalidate;
     Invalidate;
   end;
   end;
 end;
 end;

+ 2 - 5
Projects/CompForm.dfm

@@ -4320,16 +4320,13 @@ object CompileForm: TCompileForm
     OnPopup = MemosTabSetPopup
     OnPopup = MemosTabSetPopup
     Left = 48
     Left = 48
     Top = 51
     Top = 51
-    object FMClose: TMenuItem
+    object VCloseTab2: TMenuItem
       Caption = 'Close Current Tab'
       Caption = 'Close Current Tab'
       ShortCut = 16499
       ShortCut = 16499
       OnClick = VCloseTabClick
       OnClick = VCloseTabClick
     end
     end
-    object FMReopen: TMenuItem
+    object VReopenTab2: TMenuItem
       Caption = 'Reopen Tab'
       Caption = 'Reopen Tab'
-      object placeholder1: TMenuItem
-        Caption = '(placeholder)'
-      end
     end
     end
   end
   end
 end
 end

+ 59 - 84
Projects/CompForm.pas

@@ -26,7 +26,7 @@ uses
   Windows, Messages, SysUtils, Classes, Contnrs, Graphics, Controls, Forms, Dialogs, CommDlg,
   Windows, Messages, SysUtils, Classes, Contnrs, Graphics, Controls, Forms, Dialogs, CommDlg,
   Generics.Collections, UIStateForm, StdCtrls, ExtCtrls, Menus, Buttons, ComCtrls, CommCtrl,
   Generics.Collections, UIStateForm, StdCtrls, ExtCtrls, Menus, Buttons, ComCtrls, CommCtrl,
   ScintInt, ScintEdit, ScintStylerInnoSetup, NewTabSet, ModernColors, CompScintEdit,
   ScintInt, ScintEdit, ScintStylerInnoSetup, NewTabSet, ModernColors, CompScintEdit,
-  DebugStruct, CompInt, UxTheme, ImageList, ImgList, ToolWin, CompFunc, Generics.Defaults,
+  DebugStruct, CompInt, UxTheme, ImageList, ImgList, ToolWin, CompFunc,
   VirtualImageList, BaseImageCollection, ImageCollection;
   VirtualImageList, BaseImageCollection, ImageCollection;
 
 
 const
 const
@@ -211,12 +211,11 @@ type
     PrintDialog: TPrintDialog;
     PrintDialog: TPrintDialog;
     FSaveEncodingUTF8NoPreamble: TMenuItem;
     FSaveEncodingUTF8NoPreamble: TMenuItem;
     TFilesDesigner: TMenuItem;
     TFilesDesigner: TMenuItem;
-    MemosTabSetPopupMenu: TPopupMenu;
-    FMClose: TMenuItem;
-    FMReopen: TMenuItem;
-    placeholder1: TMenuItem;
     VCloseTab: TMenuItem;
     VCloseTab: TMenuItem;
     VReopenTab: TMenuItem;
     VReopenTab: TMenuItem;
+    MemosTabSetPopupMenu: TPopupMenu;
+    VCloseTab2: TMenuItem;
+    VReopenTab2: TMenuItem;
     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
     procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
     procedure FExitClick(Sender: TObject);
     procedure FExitClick(Sender: TObject);
     procedure FOpenMainFileClick(Sender: TObject);
     procedure FOpenMainFileClick(Sender: TObject);
@@ -444,7 +443,7 @@ type
     procedure MemoModifiedChange(Sender: TObject);
     procedure MemoModifiedChange(Sender: TObject);
     function MemoToTabIndex(const AMemo: TCompScintEdit): Integer;
     function MemoToTabIndex(const AMemo: TCompScintEdit): Integer;
     procedure MemoUpdateUI(Sender: TObject);
     procedure MemoUpdateUI(Sender: TObject);
-    procedure MenuAppendHiddenFiles(const container : TMenuItem);
+    procedure UpdateReopenTabMenu(const Menu: TMenuItem);
     procedure ModifyMRUMainFilesList(const AFilename: String; const AddNewItem: Boolean);
     procedure ModifyMRUMainFilesList(const AFilename: String; const AddNewItem: Boolean);
     procedure ModifyMRUParametersList(const AParameter: String; const AddNewItem: Boolean);
     procedure ModifyMRUParametersList(const AParameter: String; const AddNewItem: Boolean);
     procedure MoveCaretAndActivateMemo(const AMemo: TCompScintFileEdit; const LineNumber: Integer; const AlwaysResetColumn: Boolean);
     procedure MoveCaretAndActivateMemo(const AMemo: TCompScintFileEdit; const LineNumber: Integer; const AlwaysResetColumn: Boolean);
@@ -538,7 +537,7 @@ uses
 
 
 const
 const
   { Memos }
   { Memos }
-  MaxMemos = 64+2; { Includes the main and preprocessor output memos }
+  MaxMemos = 22; { Includes the main and preprocessor output memos }
   FirstIncludedFilesMemoIndex = 1; { This is an index into FFileMemos }
   FirstIncludedFilesMemoIndex = 1; { This is an index into FFileMemos }
 
 
   { Status bar panel indexes }
   { Status bar panel indexes }
@@ -1044,7 +1043,7 @@ end;
 
 
 procedure TCompileForm.LoadKnownIncludedFilesAndUpdateMemos(const AFilename: String);
 procedure TCompileForm.LoadKnownIncludedFilesAndUpdateMemos(const AFilename: String);
 var
 var
-  included, hidden: TStringList;
+  Strings: TStringList;
   IncludedFile: TIncludedFile;
   IncludedFile: TIncludedFile;
   I: Integer;
   I: Integer;
 begin
 begin
@@ -1053,19 +1052,14 @@ begin
 
 
   try
   try
     if AFilename <> '' then begin
     if AFilename <> '' then begin
-      hidden := nil;
-      included := TStringList.Create;
+      Strings := TStringList.Create;
       try
       try
-        hidden := TStringList.Create;
-        LoadKnownIncludedFiles(AFilename, included, hidden);
-        if included.Count > 0 then begin
-          for var Filename in hidden do
-            FHiddenFiles.Add(Filename);
-
+        LoadKnownIncludedFiles(AFilename, Strings, FHiddenFiles);
+        if Strings.Count > 0 then begin
           try
           try
-            for I := 0 to included.Count-1 do begin
+            for I := 0 to Strings.Count-1 do begin
               IncludedFile := TIncludedFile.Create;
               IncludedFile := TIncludedFile.Create;
-              IncludedFile.Filename := included[I];
+              IncludedFile.Filename := Strings[I];
               IncludedFile.CompilerFileIndex := UnknownCompilerFileIndex;
               IncludedFile.CompilerFileIndex := UnknownCompilerFileIndex;
               IncludedFile.HasLastWriteTime := GetLastWriteTimeOfFile(IncludedFile.Filename,
               IncludedFile.HasLastWriteTime := GetLastWriteTimeOfFile(IncludedFile.Filename,
                 @IncludedFile.LastWriteTime);
                 @IncludedFile.LastWriteTime);
@@ -1076,8 +1070,7 @@ begin
           end;
           end;
         end;
         end;
       finally
       finally
-        included.Free;
-        hidden.Free;
+        Strings.Free;
       end;
       end;
     end;
     end;
   except
   except
@@ -1087,18 +1080,18 @@ end;
 
 
 procedure TCompileForm.SaveKnownIncludedFiles(const AFilename: String);
 procedure TCompileForm.SaveKnownIncludedFiles(const AFilename: String);
 var
 var
-  included: TStringList;
+  Strings: TStringList;
   IncludedFile: TIncludedFile;
   IncludedFile: TIncludedFile;
 begin
 begin
   try
   try
     if AFilename <> '' then begin
     if AFilename <> '' then begin
-      included := TStringList.Create;
+      Strings := TStringList.Create;
       try
       try
         for IncludedFile in FIncludedFiles do
         for IncludedFile in FIncludedFiles do
-          included.Add(IncludedFile.Filename);
-        CompFunc.SaveKnownIncludedFiles(AFilename, included, FHiddenFiles);
+          Strings.Add(IncludedFile.Filename);
+        CompFunc.SaveKnownIncludedFiles(AFilename, Strings, FHiddenFiles);
       finally
       finally
-        included.Free;
+        Strings.Free;
       end;
       end;
     end;
     end;
   except
   except
@@ -2268,17 +2261,14 @@ begin
   VNextTab.Enabled := MemosTabSet.Visible and (MemosTabSet.Tabs.Count > 1);
   VNextTab.Enabled := MemosTabSet.Visible and (MemosTabSet.Tabs.Count > 1);
   VPreviousTab.Enabled := VNextTab.Enabled;
   VPreviousTab.Enabled := VNextTab.Enabled;
   VCloseTab.Enabled := MemosTabSet.Visible and (FActiveMemo <> FMainMemo) and (FActiveMemo <> FPreprocessorOutputMemo);
   VCloseTab.Enabled := MemosTabSet.Visible and (FActiveMemo <> FMainMemo) and (FActiveMemo <> FPreprocessorOutputMemo);
-  VReopenTab.Visible := FHiddenFiles.Count > 0;
+  VReopenTab.Visible := MemosTabSet.Visible and (FHiddenFiles.Count > 0);
+  if VReopenTab.Visible then
+    UpdateReopenTabMenu(VReopenTab);
   VHide.Checked := not StatusPanel.Visible;
   VHide.Checked := not StatusPanel.Visible;
   VCompilerOutput.Checked := StatusPanel.Visible and (OutputTabSet.TabIndex = tiCompilerOutput);
   VCompilerOutput.Checked := StatusPanel.Visible and (OutputTabSet.TabIndex = tiCompilerOutput);
   VDebugOutput.Checked := StatusPanel.Visible and (OutputTabSet.TabIndex = tiDebugOutput);
   VDebugOutput.Checked := StatusPanel.Visible and (OutputTabSet.TabIndex = tiDebugOutput);
   VDebugCallStack.Checked := StatusPanel.Visible and (OutputTabSet.TabIndex = tiDebugCallStack);
   VDebugCallStack.Checked := StatusPanel.Visible and (OutputTabSet.TabIndex = tiDebugCallStack);
   VFindResults.Checked := StatusPanel.Visible and (OutputTabSet.TabIndex = tiFindResults);
   VFindResults.Checked := StatusPanel.Visible and (OutputTabSet.TabIndex = tiFindResults);
-
-  if VReopenTab.Visible then begin
-    VReopenTab.Clear;
-    MenuAppendHiddenFiles(VReopenTab);
-  end;
 end;
 end;
 
 
 procedure TCompileForm.VNextTabClick(Sender: TObject);
 procedure TCompileForm.VNextTabClick(Sender: TObject);
@@ -2302,41 +2292,31 @@ begin
 end;
 end;
 
 
 procedure TCompileForm.VCloseTabClick(Sender: TObject);
 procedure TCompileForm.VCloseTabClick(Sender: TObject);
-var
- idx : Integer;
 begin
 begin
-  { main and preprocessor memos can't be hidden }
-  if (FActiveMemo = FMainMemo) or (FActiveMemo = FPreprocessorOutputMemo) then begin
-    ASSERT(FALSE);
-    Exit;
-  end;
-
-  { hide memo, remove associated tab+hint and mark it as hidden }
-  idx := MemoToTabIndex(FActiveMemo);
-  MemosTabSet.Tabs.Delete(idx);
-  MemosTabSet.Hints.Delete(idx);
-  FActiveMemo.Visible := FALSE;
+  { Hide memo, remove associated tab+hint and mark it as hidden }
+  var Index := MemoToTabIndex(FActiveMemo);
+  MemosTabSet.Tabs.Delete(Index);
+  MemosTabSet.Hints.Delete(Index);
+  FActiveMemo.Visible := False;
   FHiddenFiles.Add((FActiveMemo as TCompScintFileEdit).Filename);
   FHiddenFiles.Add((FActiveMemo as TCompScintFileEdit).Filename);
   SaveKnownIncludedFiles(FMainMemo.Filename);
   SaveKnownIncludedFiles(FMainMemo.Filename);
 
 
-  { select next tab, except when we're already at the end }
+  { Select next tab, except when we're already at the end }
   VNextTabClick(Self);
   VNextTabClick(Self);
   VPreviousTabClick(Self);
   VPreviousTabClick(Self);
 end;
 end;
 
 
 procedure TCompileForm.VReopenTabClick(Sender: TObject);
 procedure TCompileForm.VReopenTabClick(Sender: TObject);
-var item : TMenuItem;
-    memo : TCompScintFileEdit;
 begin
 begin
-  item := Sender as TMenuItem;
+  var MenuItem := Sender as TMenuItem;
 
 
-  var ReopenFilename := FHiddenFiles[Item.Tag];
-  FHiddenFiles.Delete(Item.Tag);
+  var ReopenFilename := FHiddenFiles[MenuItem.Tag];
+  FHiddenFiles.Delete(MenuItem.Tag);
   UpdatePreprocMemos;
   UpdatePreprocMemos;
   SaveKnownIncludedFiles(FMainMemo.Filename);
   SaveKnownIncludedFiles(FMainMemo.Filename);
 
 
-  // make it current
-  for Memo in FFileMemos do begin
+  { Activate the memo }
+  for var Memo in FFileMemos do begin
     if Memo.Used and (PathCompare(Memo.Filename, ReopenFilename) = 0) then begin
     if Memo.Used and (PathCompare(Memo.Filename, ReopenFilename) = 0) then begin
       MemosTabSet.TabIndex := MemoToTabIndex(memo);
       MemosTabSet.TabIndex := MemoToTabIndex(memo);
       Break;
       Break;
@@ -2690,55 +2670,51 @@ begin
     OpenFile(FMainMemo, CommandLineFilename, False);
     OpenFile(FMainMemo, CommandLineFilename, False);
 end;
 end;
 
 
-procedure TCompileForm.MenuAppendHiddenFiles(const container : TMenuItem);
+procedure TCompileForm.UpdateReopenTabMenu(const Menu: TMenuItem);
 begin
 begin
+  Menu.Clear;
   for var I := 0 to FHiddenFiles.Count-1 do begin
   for var I := 0 to FHiddenFiles.Count-1 do begin
-    var item := TMenuItem.Create(container);
-    item.Caption := ExtractFileName(FHiddenFiles[I]);
-    item.Tag     := I;
-    item.OnClick := VReopenTabClick;
-    container.Add( item);
+    var MenuItem := TMenuItem.Create(Menu);
+    MenuItem.Caption := ExtractFileName(FHiddenFiles[I]);
+    MenuItem.Tag := I;
+    MenuItem.OnClick := VReopenTabClick;
+    Menu.Add(MenuItem);
   end;
   end;
 end;
 end;
 
 
 procedure TCompileForm.MemosTabSetPopup(Sender: TObject);
 procedure TCompileForm.MemosTabSetPopup(Sender: TObject);
 begin
 begin
-  { main and preprocessor memos can't be hidden }
-  FMClose.Enabled := (FActiveMemo <> FMainMemo) and (FActiveMemo <> FPreprocessorOutputMemo);
+  { Main and preprocessor memos can't be hidden }
+  VCloseTab2.Enabled := (FActiveMemo <> FMainMemo) and (FActiveMemo <> FPreprocessorOutputMemo);
 
 
-  FMReopen.Visible := FHiddenFiles.Count > 0;
-  if FMReopen.Visible then begin
-    FMReopen.Clear;
-    MenuAppendHiddenFiles(FMReopen);
-  end;
+  VReopenTab2.Visible := FHiddenFiles.Count > 0;
+  if VReopenTab2.Visible then
+    UpdateReopenTabMenu(VReopenTab2);
 end;
 end;
 
 
 procedure TCompileForm.MemosTabSetClick(Sender: TObject);
 procedure TCompileForm.MemosTabSetClick(Sender: TObject);
 
 
   { Also see MemoToTabIndex }
   { Also see MemoToTabIndex }
-  function TabIndexToMemoIndex(const TabIndex, MaxTabIndex: Integer): Integer;
-  var iMemo, iTab : Integer;
+  function TabIndexToMemoIndex(const ATabIndex, AMaxTabIndex: Integer): Integer;
   begin
   begin
-    if TabIndex = 0 then
+    if ATabIndex = 0 then
       Result := 0 { First tab displays the main memo which is FMemos[0] }
       Result := 0 { First tab displays the main memo which is FMemos[0] }
-    else if FPreprocessorOutputMemo.Used and (TabIndex = MaxTabIndex) then
+    else if FPreprocessorOutputMemo.Used and (ATabIndex = AMaxTabIndex) then
       Result := 1 { Last tab displays the preprocessor output memo which is FMemos[1] }
       Result := 1 { Last tab displays the preprocessor output memo which is FMemos[1] }
     else begin
     else begin
-      { only count memos not explicitly hidden by the user }
-      iTab := 0;
-      for iMemo := FirstIncludedFilesMemoIndex to FFileMemos.Count-1 do begin
-        if FHiddenFiles.IndexOf(FFileMemos[iMemo].Filename) = -1 then begin
-          Inc(iTab);
-          if iTab = TabIndex then begin
-            result := iMemo + 1;   { Other tabs display include files which start at second tab but at FMemos[2] }
+      { Only count memos not explicitly hidden by the user }
+      var TabIndex := 0;
+      for var MemoIndex := FirstIncludedFilesMemoIndex to FFileMemos.Count-1 do begin
+        if FHiddenFiles.IndexOf(FFileMemos[MemoIndex].Filename) = -1 then begin
+          Inc(TabIndex);
+          if TabIndex = ATabIndex then begin
+            Result := MemoIndex + 1;   { Other tabs display include files which start at second tab but at FMemos[2] }
             Exit;
             Exit;
           end;
           end;
         end;
         end;
       end;
       end;
 
 
-      // we should never get here
-      ASSERT(FALSE);
-      Result := -1;
+      raise Exception.Create('TabIndexToMemoIndex failed');
     end;
     end;
   end;
   end;
 
 
@@ -3182,7 +3158,6 @@ end;
 
 
 { Also see TabIndexToMemoIndex }
 { Also see TabIndexToMemoIndex }
 function TCompileForm.MemoToTabIndex(const AMemo: TCompScintEdit): Integer;
 function TCompileForm.MemoToTabIndex(const AMemo: TCompScintEdit): Integer;
-var iMemo : Integer;
 begin
 begin
   if AMemo = FMainMemo then
   if AMemo = FMainMemo then
     Result := 0 { First tab displays the main memo  }
     Result := 0 { First tab displays the main memo  }
@@ -3193,10 +3168,10 @@ begin
   end else begin
   end else begin
     Result := FFileMemos.IndexOf(AMemo as TCompScintFileEdit); { Other tabs display include files which start second tab }
     Result := FFileMemos.IndexOf(AMemo as TCompScintFileEdit); { Other tabs display include files which start second tab }
 
 
-    // filter memos explicitly closed by the user
-    for iMemo := result-1 downto 0 do
-      if FHiddenFiles.IndexOf(FFileMemos[iMemo].Filename) <> -1 then
-        Dec(result);
+   { Filter memos explicitly hidden by the user }
+    for var MemoIndex := Result-1 downto 0 do
+      if FHiddenFiles.IndexOf(FFileMemos[MemoIndex].Filename) <> -1 then
+        Dec(Result);
   end;
   end;
 end;
 end;
 
 

+ 10 - 16
Projects/CompFunc.pas

@@ -240,13 +240,10 @@ begin
 end;
 end;
 
 
 procedure LoadKnownIncludedFiles(const AFilename: String; const IncludedFiles, HiddenFiles: TStringList);
 procedure LoadKnownIncludedFiles(const AFilename: String; const IncludedFiles, HiddenFiles: TStringList);
-var
-  Ini: TConfigIniFile;
-  OldDelimiter: Char;
 begin
 begin
-  ASSERT( IncludedFiles.Delimiter = HiddenFiles.Delimiter);
-  OldDelimiter := IncludedFiles.Delimiter;
-  Ini := TConfigIniFile.Create;
+  var OldIncludedFilesDelimiter := IncludedFiles.Delimiter;
+  var OldHiddenFilesDelimiter := HiddenFiles.Delimiter;
+  var Ini := TConfigIniFile.Create;
   try
   try
     IncludedFiles.Delimiter := '*';
     IncludedFiles.Delimiter := '*';
     IncludedFiles.DelimitedText := Ini.ReadString('IncludedFilesHistory', AFilename, '');
     IncludedFiles.DelimitedText := Ini.ReadString('IncludedFilesHistory', AFilename, '');
@@ -256,15 +253,12 @@ begin
 
 
   finally
   finally
     Ini.Free;
     Ini.Free;
-    IncludedFiles.Delimiter := OldDelimiter;
-    HiddenFiles.Delimiter := OldDelimiter;
+    IncludedFiles.Delimiter := OldIncludedFilesDelimiter;
+    HiddenFiles.Delimiter := OldHiddenFilesDelimiter;
   end;
   end;
 end;
 end;
 
 
 procedure SaveKnownIncludedFiles(const AFilename: String; const IncludedFiles, HiddenFiles: TStringList);
 procedure SaveKnownIncludedFiles(const AFilename: String; const IncludedFiles, HiddenFiles: TStringList);
-var
-  Ini: TConfigIniFile;
-  OldDelimiter: Char;
 begin
 begin
   if IncludedFiles.Count = 0 then begin
   if IncludedFiles.Count = 0 then begin
     DeleteKnownIncludedFiles(AFilename);
     DeleteKnownIncludedFiles(AFilename);
@@ -274,9 +268,9 @@ begin
   if AFilename = '' then
   if AFilename = '' then
     raise Exception.Create('AFilename must be set');
     raise Exception.Create('AFilename must be set');
 
 
-  ASSERT( IncludedFiles.Delimiter = HiddenFiles.Delimiter);
-  OldDelimiter := IncludedFiles.Delimiter;
-  Ini := TConfigIniFile.Create;
+  var OldIncludedFilesDelimiter := IncludedFiles.Delimiter;
+  var OldHiddenFilesDelimiter := HiddenFiles.Delimiter;
+  var Ini := TConfigIniFile.Create;
   try
   try
     IncludedFiles.Delimiter := '*';
     IncludedFiles.Delimiter := '*';
     Ini.WriteString('IncludedFilesHistory', AFilename, IncludedFiles.DelimitedText);
     Ini.WriteString('IncludedFilesHistory', AFilename, IncludedFiles.DelimitedText);
@@ -284,8 +278,8 @@ begin
     Ini.WriteString('HiddenFilesHistory', AFilename, HiddenFiles.DelimitedText);
     Ini.WriteString('HiddenFilesHistory', AFilename, HiddenFiles.DelimitedText);
   finally
   finally
     Ini.Free;
     Ini.Free;
-    IncludedFiles.Delimiter := OldDelimiter;
-    HiddenFiles.Delimiter := OldDelimiter;
+    IncludedFiles.Delimiter := OldIncludedFilesDelimiter;
+    HiddenFiles.Delimiter := OldHiddenFilesDelimiter;
   end;
   end;
 end;
 end;