fix, prevent corrupted history to slow down the app on start/exit

This commit is contained in:
Basile Burg 2017-02-11 20:22:56 +01:00
parent efebfaca6b
commit 2202283ec4
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
2 changed files with 43 additions and 8 deletions

View File

@ -286,6 +286,7 @@ type
procedure setIgnoredSignals(value: TStringList);
procedure setCommandsHistory(value: TStringList);
procedure setShortcuts(value: TCEDebugShortcuts);
procedure cleanInvalidHistoryEntries;
published
property asmSyntax: TAsmSyntax read fAsmSyntax write fAsmSyntax;
property autoDisassemble: boolean read fAutoDisassemble write fAutoDisassemble;
@ -302,6 +303,9 @@ type
property showRawMiOutput: boolean read fShowRawMiOutput write fShowRawMiOutput;
property showOutput: boolean read fShowOutput write fShowOutput;
property stopAllThreadsOnBreak: boolean read fStopAllThreadsOnBreak write fStopAllThreadsOnBreak;
protected
procedure beforeSave; override;
procedure afterLoad; override;
public
constructor create(aOwner: TComponent); override;
destructor destroy; override;
@ -637,6 +641,25 @@ begin
inherited;
end;
procedure TCEDebugOptionsBase.cleanInvalidHistoryEntries;
var
i: integer;
begin
for i := fCommandsHistory.Count-1 downto 0 do
if fCommandsHistory[i].length > 128 then
fCommandsHistory.Delete(i);
end;
procedure TCEDebugOptionsBase.beforeSave;
begin
cleanInvalidHistoryEntries;
end;
procedure TCEDebugOptionsBase.afterLoad;
begin
cleanInvalidHistoryEntries;
end;
procedure TCEDebugOptionsBase.setIgnoredSignals(value: TStringList);
begin
fIgnoredSignals.Assign(value);

View File

@ -23,8 +23,12 @@ type
fWholeWord: boolean;
fMrSearches: TStringList;
fMrReplacements: TStringList;
procedure cleanIvnalidHistoryItems;
procedure setMrSearches(value: TStringList);
procedure setMrReplacements(value: TStringList);
protected
procedure afterLoad; override;
procedure beforeSave; override;
published
property prompt: boolean read fPrompt write fPrompt;
property fromCursor: boolean read fFromCur write fFromCur;
@ -35,7 +39,6 @@ type
property recentSearches: TStringList read fMrSearches write setMrSearches;
property recentReplacements: TStringList read fMrReplacements write setMrReplacements;
public
procedure afterLoad; override;
constructor create(aOwner: TComponent); override;
destructor destroy; override;
procedure assign(source: TPersistent); override;
@ -175,16 +178,10 @@ begin
fMrSearches.Assign(value);
end;
procedure TCESearchOptions.setMrReplacements(value: TStringList);
begin
fMrReplacements.Assign(value);
end;
procedure TCESearchOptions.afterLoad;
procedure TCESearchOptions.cleanIvnalidHistoryItems;
var
i: integer;
begin
inherited;
for i := fMrReplacements.Count-1 downto 0 do
if fMrReplacements[i].length > 128 then
fMrReplacements.Delete(i);
@ -192,6 +189,21 @@ begin
if fMrSearches[i].length > 128 then
fMrSearches.Delete(i);
end;
procedure TCESearchOptions.setMrReplacements(value: TStringList);
begin
fMrReplacements.Assign(value);
end;
procedure TCESearchOptions.afterLoad;
begin
cleanIvnalidHistoryItems;
end;
procedure TCESearchOptions.beforeSave;
begin
cleanIvnalidHistoryItems;
end;
{$ENDREGION}
{$REGION Standard Comp/Obj------------------------------------------------------}