PoChecker: TPoFamily.CheckDuplicateOriginals rewritten in order not to use TPOFile.OriginalList

git-svn-id: trunk@57345 -
This commit is contained in:
maxim 2018-02-21 22:56:28 +00:00
parent b37b2476b5
commit d67b1cba36

View File

@ -11,7 +11,7 @@ uses
// LCL // LCL
LCLProc, Masks, LCLProc, Masks,
// LazUtils // LazUtils
FileUtil, LazFileUtils, Translations, FileUtil, LazFileUtils, Translations, StringHashList,
// PoChecker // PoChecker
PoCheckerConsts; PoCheckerConsts;
@ -721,23 +721,29 @@ procedure TPoFamily.CheckDuplicateOriginals(out WarningCount: Integer;
var var
i: Integer; i: Integer;
PoItem: TPOFileItem; PoItem: TPOFileItem;
DupItemsList: TStringHashList;
LastHash, CurHash: Cardinal; LastHash, CurHash: Cardinal;
begin begin
//debugln('TPoFamily.CheckMismatchedOriginals'); //debugln('TPoFamily.CheckMismatchedOriginals');
DoTestStart(PoTestTypeNames[pttCheckDuplicateOriginals], ShortMasterName); DoTestStart(PoTestTypeNames[pttCheckDuplicateOriginals], ShortMasterName);
WarningCount := 0; WarningCount := 0;
DupItemsList := TStringHashList.Create(true);
for i := 0 to FMaster.Items.Count - 1 do begin
PoItem := TPOFileItem(FMaster.Items[i]);
if PoItem.Duplicate = true then
DupItemsList.Add(PoItem.Original, PoItem);
end;
//debugln('TPoFamily.CehckDuplicateOriginals'); //debugln('TPoFamily.CehckDuplicateOriginals');
//debugln('FMaster.OriginalList.Count = ',DbgS(FMaster.OriginalList.Count)); //debugln('DupItemsList.Count = ',DbgS(DupItemsList.Count));
LastHash := 0; LastHash := 0;
for i := 0 to FMaster.OriginalList.Count - 1 do for i := 0 to DupItemsList.Count - 1 do
begin begin
PoItem := TPoFileItem(FMaster.OriginalList.List[i]^.Data); PoItem := TPoFileItem(DupItemsList.List[i]^.Data);
if Assigned(PoItem) then if Assigned(PoItem) then
begin begin
CurHash := FMaster.OriginalList.List[i]^.HashValue ; CurHash := DupItemsList.List[i]^.HashValue;
if PoItem.Duplicate = true then
begin
if (WarningCount = 0) then if (WarningCount = 0) then
begin begin
ErrorLog.Add(Divider); ErrorLog.Add(Divider);
@ -758,7 +764,6 @@ begin
//debugln(format(sDuplicateLineNrWithValue,[PoItem.LineNr,PoItem.IdentifierLow])); //debugln(format(sDuplicateLineNrWithValue,[PoItem.LineNr,PoItem.IdentifierLow]));
end; end;
end; end;
end;
if (WarningCount > 0) then if (WarningCount > 0) then
begin begin
@ -769,6 +774,8 @@ begin
ErrorLog.Add(''); ErrorLog.Add('');
end; end;
DupItemsList.Free;
DoTestEnd(PoTestTypeNames[pttCheckDuplicateOriginals], WarningCount); DoTestEnd(PoTestTypeNames[pttCheckDuplicateOriginals], WarningCount);
//debugln('TPoFamily.CheckDuplicateOriginals: ',Dbgs(WarningCount),' Errors'); //debugln('TPoFamily.CheckDuplicateOriginals: ',Dbgs(WarningCount),' Errors');
end; end;