mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-20 12:19:20 +02:00
OPM: Faster string comparison.
git-svn-id: trunk@64462 -
This commit is contained in:
parent
d6aedf99e8
commit
64656b41e2
@ -299,7 +299,7 @@ begin
|
|||||||
while Assigned(Node) do
|
while Assigned(Node) do
|
||||||
begin
|
begin
|
||||||
Data := FVST.GetNodeData(Node);
|
Data := FVST.GetNodeData(Node);
|
||||||
if UpperCase(Data^.FName) = UpperCase(AName) then
|
if CompareText(Data^.FName, AName) = 0 then
|
||||||
begin
|
begin
|
||||||
FVST.CheckState[Node] := csCheckedNormal;
|
FVST.CheckState[Node] := csCheckedNormal;
|
||||||
Result := True;
|
Result := True;
|
||||||
@ -331,7 +331,7 @@ begin
|
|||||||
Data := FVST.GetNodeData(Node);
|
Data := FVST.GetNodeData(Node);
|
||||||
Data^.FName := Categories[I];
|
Data^.FName := Categories[I];
|
||||||
Data^.FImageIndex := -1;
|
Data^.FImageIndex := -1;
|
||||||
if UpperCase(CategoriesEng[I]) = 'OTHER' then
|
if CompareText(CategoriesEng[I], 'OTHER') = 0 then
|
||||||
Data^.FType := 1
|
Data^.FType := 1
|
||||||
else
|
else
|
||||||
Data^.FType := 0;
|
Data^.FType := 0;
|
||||||
|
@ -33,7 +33,7 @@ uses
|
|||||||
// LCL
|
// LCL
|
||||||
Dialogs, Forms, Controls,
|
Dialogs, Forms, Controls,
|
||||||
// LazUtils
|
// LazUtils
|
||||||
LazFileUtils,
|
LazFileUtils, LazLoggerBase,
|
||||||
// IdeIntf
|
// IdeIntf
|
||||||
LazIDEIntf, PackageIntf,
|
LazIDEIntf, PackageIntf,
|
||||||
// OpkMan
|
// OpkMan
|
||||||
@ -298,11 +298,11 @@ var
|
|||||||
Result := True;
|
Result := True;
|
||||||
for I := 0 to SLExcludedFolders.Count - 1 do
|
for I := 0 to SLExcludedFolders.Count - 1 do
|
||||||
begin
|
begin
|
||||||
if UpperCase(SLExcludedFolders.Strings[I]) = UpperCase(AName) then
|
if CompareText(SLExcludedFolders.Strings[I], AName) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
Break;
|
Break;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -317,7 +317,7 @@ var
|
|||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
repeat
|
repeat
|
||||||
if (UpperCase(ExtractFileExt(SR.Name)) = UpperCase('.lpk')) then
|
if CompareFileExtQuick(SR.Name, 'lpk') = 0 then
|
||||||
begin
|
begin
|
||||||
PackageData := TPackageData.Create;
|
PackageData := TPackageData.Create;
|
||||||
PackageData.FName := SR.Name;
|
PackageData.FName := SR.Name;
|
||||||
@ -384,7 +384,8 @@ var
|
|||||||
begin
|
begin
|
||||||
for I := 0 to SLExcludedFiles.Count - 1 do
|
for I := 0 to SLExcludedFiles.Count - 1 do
|
||||||
begin
|
begin
|
||||||
if UpperCase(SLExcludedFiles.Strings[I]) = UpperCase(ExtractFileExt(AName)) then
|
DebugLn(['OPM IsAllowed: ExcFile=', SLExcludedFiles.Strings[I], ', AName=', AName]);
|
||||||
|
if CompareFileExt(AName, SLExcludedFiles.Strings[I], False) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
Break;
|
Break;
|
||||||
@ -394,11 +395,14 @@ var
|
|||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
for I := 0 to SLExcludedFolders.Count - 1 do
|
for I := 0 to SLExcludedFolders.Count - 1 do
|
||||||
if UpperCase(SLExcludedFolders.Strings[I]) = UpperCase(AName) then
|
begin
|
||||||
|
DebugLn(['OPM IsAllowed: ExcFolder=', SLExcludedFolders.Strings[I], ', AName=', AName]);
|
||||||
|
if CompareText(SLExcludedFolders.Strings[I], AName) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := False;
|
Result := False;
|
||||||
Break;
|
Break;
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
for I := 0 to PackageEditingInterface.GetPackageCount - 1 do
|
for I := 0 to PackageEditingInterface.GetPackageCount - 1 do
|
||||||
begin
|
begin
|
||||||
if UpperCase(PackageEditingInterface.GetPackages(I).Filename) = UpperCase(AFileName) then
|
if CompareText(PackageEditingInterface.GetPackages(I).Filename, AFileName) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := PackageEditingInterface.GetPackages(I);
|
Result := PackageEditingInterface.GetPackages(I);
|
||||||
Break;
|
Break;
|
||||||
@ -139,7 +139,7 @@ begin
|
|||||||
PkgFileName := Copy(FToInstall.Strings[I], 1, P - 1)
|
PkgFileName := Copy(FToInstall.Strings[I], 1, P - 1)
|
||||||
else
|
else
|
||||||
PkgFileName := FToInstall.Strings[I];
|
PkgFileName := FToInstall.Strings[I];
|
||||||
if UpperCase(PkgFileName) = UpperCase(AFileName) then
|
if CompareText(PkgFileName, AFileName) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
Break;
|
Break;
|
||||||
@ -360,8 +360,9 @@ begin
|
|||||||
DependecyPackage := SerializablePackages.FindLazarusPackage(PackageDependency.PkgFileName + '.lpk');
|
DependecyPackage := SerializablePackages.FindLazarusPackage(PackageDependency.PkgFileName + '.lpk');
|
||||||
if DependecyPackage <> nil then
|
if DependecyPackage <> nil then
|
||||||
begin
|
begin
|
||||||
if UpperCase(DependecyPackage.Name) = UpperCase(TLazarusPackage(FPackageList.Items[I]).Name) then
|
if CompareText(DependecyPackage.Name,
|
||||||
begin
|
TLazarusPackage(FPackageList.Items[I]).Name) = 0
|
||||||
|
then begin
|
||||||
CanGo := False;
|
CanGo := False;
|
||||||
SPos := I;
|
SPos := I;
|
||||||
EPos := J;
|
EPos := J;
|
||||||
|
@ -180,7 +180,7 @@ begin
|
|||||||
for I := 0 to FPackageLinks.Count - 1 do
|
for I := 0 to FPackageLinks.Count - 1 do
|
||||||
begin
|
begin
|
||||||
PackageLink := TPackageLink(FPackageLinks.Items[I]);
|
PackageLink := TPackageLink(FPackageLinks.Items[I]);
|
||||||
if UpperCase(PackageLink.Name) = UpperCase(AName) then
|
if CompareText(PackageLink.Name, AName) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := PackageLink;
|
Result := PackageLink;
|
||||||
Break;
|
Break;
|
||||||
@ -259,7 +259,7 @@ begin
|
|||||||
for J := 0 to MetaPackage.LazarusPackages.Count - 1 do
|
for J := 0 to MetaPackage.LazarusPackages.Count - 1 do
|
||||||
begin
|
begin
|
||||||
LazPackage := TLazarusPackage(MetaPackage.LazarusPackages.Items[J]);
|
LazPackage := TLazarusPackage(MetaPackage.LazarusPackages.Items[J]);
|
||||||
if UpperCase(LazPackage.Name) = UpperCase(AName) then
|
if CompareText(LazPackage.Name, AName) = 0 then
|
||||||
begin
|
begin
|
||||||
LazPackage.Checked := True;
|
LazPackage.Checked := True;
|
||||||
MetaPackage.Checked := True;
|
MetaPackage.Checked := True;
|
||||||
@ -282,7 +282,7 @@ begin
|
|||||||
for J := 0 to MetaPackage.LazarusPackages.Count - 1 do
|
for J := 0 to MetaPackage.LazarusPackages.Count - 1 do
|
||||||
begin
|
begin
|
||||||
LazPackage := TLazarusPackage(MetaPackage.LazarusPackages.Items[J]);
|
LazPackage := TLazarusPackage(MetaPackage.LazarusPackages.Items[J]);
|
||||||
if UpperCase(LazPackage.Name) = UpperCase(AName) then
|
if CompareText(LazPackage.Name, AName) = 0 then
|
||||||
begin
|
begin
|
||||||
FPackagesToInstall.Add(LazPackage);
|
FPackagesToInstall.Add(LazPackage);
|
||||||
Break;
|
Break;
|
||||||
@ -295,32 +295,35 @@ function TOPMInterfaceEx.ResolveDependencies: TModalResult;
|
|||||||
var
|
var
|
||||||
I, J: Integer;
|
I, J: Integer;
|
||||||
PackageList: TObjectList;
|
PackageList: TObjectList;
|
||||||
PkgFileName: String;
|
Msg, LazPkgName, PkgFileName: String;
|
||||||
DependencyPkg: TLazarusPackage;
|
DependencyPkg: TLazarusPackage;
|
||||||
MetaPkg: TMetaPackage;
|
MetaPkg: TMetaPackage;
|
||||||
Msg: String;
|
|
||||||
begin
|
begin
|
||||||
Result := mrNone;
|
Result := mrNone;
|
||||||
FPackageDependecies.Clear;
|
FPackageDependecies.Clear;
|
||||||
for I := 0 to FPackagesToInstall.Count - 1 do
|
for I := 0 to FPackagesToInstall.Count - 1 do
|
||||||
begin
|
begin
|
||||||
|
LazPkgName := TLazarusPackage(FPackagesToInstall.Items[I]).Name;
|
||||||
PackageList := TObjectList.Create(True);
|
PackageList := TObjectList.Create(True);
|
||||||
try
|
try
|
||||||
SerializablePackages.GetPackageDependencies(TLazarusPackage(FPackagesToInstall.Items[I]).Name, PackageList, True, True);
|
SerializablePackages.GetPackageDependencies(LazPkgName, PackageList, True, True);
|
||||||
for J := 0 to PackageList.Count - 1 do
|
for J := 0 to PackageList.Count - 1 do
|
||||||
begin
|
begin
|
||||||
PkgFileName := TPackageDependency(PackageList.Items[J]).PkgFileName + '.lpk';
|
PkgFileName := TPackageDependency(PackageList.Items[J]).PkgFileName + '.lpk';
|
||||||
DependencyPkg := SerializablePackages.FindLazarusPackage(PkgFileName);
|
DependencyPkg := SerializablePackages.FindLazarusPackage(PkgFileName);
|
||||||
if DependencyPkg <> nil then
|
if DependencyPkg <> nil then
|
||||||
begin
|
begin
|
||||||
if (not DependencyPkg.Checked) and
|
if (not DependencyPkg.Checked) and (CompareText(LazPkgName, PkgFileName) <> 0)
|
||||||
(UpperCase(TLazarusPackage(FPackagesToInstall.Items[I]).Name) <> UpperCase(PkgFileName)) and
|
and ((SerializablePackages.IsDependencyOk(TPackageDependency(PackageList.Items[J]), DependencyPkg))
|
||||||
((SerializablePackages.IsDependencyOk(TPackageDependency(PackageList.Items[J]), DependencyPkg)) and
|
and
|
||||||
((not (DependencyPkg.PackageState = psInstalled)) or ((DependencyPkg.PackageState = psInstalled) and (not (SerializablePackages.IsInstalledVersionOk(TPackageDependency(PackageList.Items[J]), DependencyPkg.InstalledFileVersion)))))) then
|
((not (DependencyPkg.PackageState = psInstalled))
|
||||||
|
or ((DependencyPkg.PackageState = psInstalled)
|
||||||
|
and (not (SerializablePackages.IsInstalledVersionOk(
|
||||||
|
TPackageDependency(PackageList.Items[J]), DependencyPkg.InstalledFileVersion)))))) then
|
||||||
begin
|
begin
|
||||||
if (Result = mrNone) or (Result = mrYes) then
|
if (Result = mrNone) or (Result = mrYes) then
|
||||||
begin
|
begin
|
||||||
Msg := Format(rsMainFrm_rsPackageDependency0, [TLazarusPackage(FPackagesToInstall.Items[I]).Name, DependencyPkg.Name]);
|
Msg := Format(rsMainFrm_rsPackageDependency0, [LazPkgName, DependencyPkg.Name]);
|
||||||
Result := MessageDlgEx(Msg, mtConfirmation, [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel], nil);
|
Result := MessageDlgEx(Msg, mtConfirmation, [mbYes, mbYesToAll, mbNo, mbNoToAll, mbCancel], nil);
|
||||||
if Result in [mrNo, mrNoToAll] then
|
if Result in [mrNo, mrNoToAll] then
|
||||||
if MessageDlgEx(rsMainFrm_rsPackageDependency1, mtInformation, [mbYes, mbNo], nil) <> mrYes then
|
if MessageDlgEx(rsMainFrm_rsPackageDependency1, mtInformation, [mbYes, mbNo], nil) <> mrYes then
|
||||||
|
@ -356,7 +356,7 @@ begin
|
|||||||
while Assigned(Node) do
|
while Assigned(Node) do
|
||||||
begin
|
begin
|
||||||
Data := FVST.GetNodeData(Node);
|
Data := FVST.GetNodeData(Node);
|
||||||
if UpperCase(Data^.LazarusPackageName + '.lpk') = UpperCase(AName) then
|
if CompareText(Data^.LazarusPackageName + '.lpk', AName) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := Node^.CheckState = csCheckedNormal;
|
Result := Node^.CheckState = csCheckedNormal;
|
||||||
Break;
|
Break;
|
||||||
|
@ -893,7 +893,7 @@ procedure TMainFrm.tbUninstallClick(Sender: TObject);
|
|||||||
for I := 0 to PackageEditingInterface.GetPackageCount - 1 do
|
for I := 0 to PackageEditingInterface.GetPackageCount - 1 do
|
||||||
begin
|
begin
|
||||||
IDEPackge := PackageEditingInterface.GetPackages(I);
|
IDEPackge := PackageEditingInterface.GetPackages(I);
|
||||||
if UpperCase(IDEPackge.Filename) = UpperCase(AFileName) then
|
if CompareText(IDEPackge.Filename, AFileName) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := IDEPackge;
|
Result := IDEPackge;
|
||||||
Break;
|
Break;
|
||||||
@ -1290,10 +1290,10 @@ end;
|
|||||||
procedure TMainFrm.miLoadClick(Sender: TObject);
|
procedure TMainFrm.miLoadClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
SL: TStringList;
|
SL: TStringList;
|
||||||
I: Integer;
|
TrimmedS: String;
|
||||||
|
I, CheckCount: Integer;
|
||||||
Node: PVirtualNode;
|
Node: PVirtualNode;
|
||||||
Data: PData;
|
Data: PData;
|
||||||
CheckCount: Integer;
|
|
||||||
begin
|
begin
|
||||||
if OD.Execute then
|
if OD.Execute then
|
||||||
begin
|
begin
|
||||||
@ -1303,11 +1303,12 @@ begin
|
|||||||
SL.LoadFromFile(OD.FileName);
|
SL.LoadFromFile(OD.FileName);
|
||||||
for I := 0 to SL.Count - 1 do
|
for I := 0 to SL.Count - 1 do
|
||||||
begin
|
begin
|
||||||
|
TrimmedS := Trim(SL.Strings[I]);
|
||||||
Node := VisualTree.VST.GetFirst;
|
Node := VisualTree.VST.GetFirst;
|
||||||
while Node <> nil do
|
while Node <> nil do
|
||||||
begin
|
begin
|
||||||
Data := VisualTree.VST.GetNodeData(Node);
|
Data := VisualTree.VST.GetNodeData(Node);
|
||||||
if UpperCase(Trim(Data^.LazarusPackageName)) = UpperCase(Trim(SL.Strings[I])) then
|
if CompareText(Trim(Data^.LazarusPackageName), TrimmedS) = 0 then
|
||||||
begin
|
begin
|
||||||
VisualTree.VST.CheckState[Node] := csCheckedNormal;
|
VisualTree.VST.CheckState[Node] := csCheckedNormal;
|
||||||
Inc(CheckCount);
|
Inc(CheckCount);
|
||||||
|
@ -366,7 +366,7 @@ begin
|
|||||||
while Assigned(Node) do
|
while Assigned(Node) do
|
||||||
begin
|
begin
|
||||||
Data := FVST.GetNodeData(Node);
|
Data := FVST.GetNodeData(Node);
|
||||||
if (UpperCase(Data^.FAddress) = UpperCase(AAddress)) and (Data^.FUniqueID <> AUniqueID) then
|
if (CompareText(Data^.FAddress, AAddress) = 0) and (Data^.FUniqueID <> AUniqueID) then
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
Break;
|
Break;
|
||||||
|
@ -69,7 +69,7 @@ begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
for I := 0 to Options.RemoteRepository.Count - 1 do
|
for I := 0 to Options.RemoteRepository.Count - 1 do
|
||||||
begin
|
begin
|
||||||
if UpperCase(Options.RemoteRepository.Strings[I]) = UpperCase(AAddress) then
|
if CompareText(Options.RemoteRepository.Strings[I], AAddress) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := True;
|
Result := True;
|
||||||
Break;
|
Break;
|
||||||
|
@ -586,7 +586,7 @@ begin
|
|||||||
for I := 0 to FLazarusPackages.Count - 1 do
|
for I := 0 to FLazarusPackages.Count - 1 do
|
||||||
begin
|
begin
|
||||||
Result := TLazarusPackage(FLazarusPackages.Items[I]);
|
Result := TLazarusPackage(FLazarusPackages.Items[I]);
|
||||||
if UpperCase(Result.Name) = UpperCase(APackageName) then
|
if CompareText(Result.Name, APackageName) = 0 then
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
Result := nil;
|
Result := nil;
|
||||||
@ -770,20 +770,17 @@ function TSerializablePackages.FindMetaPackage(const AValue: String;
|
|||||||
const AFindPackageBy: TFindPackageBy): TMetaPackage;
|
const AFindPackageBy: TFindPackageBy): TMetaPackage;
|
||||||
var
|
var
|
||||||
I: Integer;
|
I: Integer;
|
||||||
NeedToBreak: Boolean;
|
S: String;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
for I := 0 to Count - 1 do
|
for I := 0 to Count - 1 do
|
||||||
begin
|
begin
|
||||||
case AFindPackageBy of
|
case AFindPackageBy of
|
||||||
fpbPackageName: NeedToBreak := UpperCase(Items[I].Name) = UpperCase(AValue);
|
fpbPackageName: S := Items[I].Name;
|
||||||
fpbRepositoryFilename: NeedToBreak := UpperCase(Items[I].RepositoryFileName) = UpperCase(AValue)
|
fpbRepositoryFilename: S := Items[I].RepositoryFileName;
|
||||||
end;
|
|
||||||
if NeedToBreak then
|
|
||||||
begin
|
|
||||||
Result := Items[I];
|
|
||||||
Break;
|
|
||||||
end;
|
end;
|
||||||
|
if CompareText(S, AValue) = 0 then
|
||||||
|
Exit(Items[I]);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -810,24 +807,20 @@ function TSerializablePackages.FindPackageIndex(const AValue: String;
|
|||||||
const AFindPackageBy: TFindPackageBy): Integer;
|
const AFindPackageBy: TFindPackageBy): Integer;
|
||||||
var
|
var
|
||||||
I: Integer;
|
I: Integer;
|
||||||
NeedToBreak: Boolean;
|
S: String;
|
||||||
begin
|
begin
|
||||||
Result := -1;
|
Result := -1;
|
||||||
for I := 0 to Count - 1 do
|
for I := 0 to Count - 1 do
|
||||||
begin
|
begin
|
||||||
case AFindPackageBy of
|
case AFindPackageBy of
|
||||||
fpbPackageName: NeedToBreak := Items[I].Name = AValue;
|
fpbPackageName: S := Items[I].Name;
|
||||||
fpbRepositoryFilename: NeedToBreak := Items[I].RepositoryFileName = AValue
|
fpbRepositoryFilename: S := Items[I].RepositoryFileName;
|
||||||
end;
|
|
||||||
if NeedToBreak then
|
|
||||||
begin
|
|
||||||
Result := I;
|
|
||||||
Break;
|
|
||||||
end;
|
end;
|
||||||
|
if S = AValue then
|
||||||
|
Exit(I);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TSerializablePackages.FindLazarusPackage(const APackageName: String): TLazarusPackage;
|
function TSerializablePackages.FindLazarusPackage(const APackageName: String): TLazarusPackage;
|
||||||
var
|
var
|
||||||
I, J: Integer;
|
I, J: Integer;
|
||||||
@ -837,7 +830,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
for J := 0 to Items[I].FLazarusPackages.Count - 1 do
|
for J := 0 to Items[I].FLazarusPackages.Count - 1 do
|
||||||
begin
|
begin
|
||||||
if UpperCase(TLazarusPackage(Items[I].FLazarusPackages.Items[J]).Name) = UpperCase(APackageName) then
|
if CompareText(TLazarusPackage(Items[I].FLazarusPackages.Items[J]).Name, APackageName) = 0 then
|
||||||
begin
|
begin
|
||||||
Result := TLazarusPackage(Items[I].FLazarusPackages.Items[J]);
|
Result := TLazarusPackage(Items[I].FLazarusPackages.Items[J]);
|
||||||
Break;
|
Break;
|
||||||
@ -1399,7 +1392,7 @@ begin
|
|||||||
for J := 0 to PackageEditingInterface.GetPackageCount - 1 do
|
for J := 0 to PackageEditingInterface.GetPackageCount - 1 do
|
||||||
begin
|
begin
|
||||||
IDEPackage := PackageEditingInterface.GetPackages(J);
|
IDEPackage := PackageEditingInterface.GetPackages(J);
|
||||||
if UpperCase(ExtractFileName(IDEPackage.Filename)) = UpperCase(PackageName) then
|
if CompareText(ExtractFileName(IDEPackage.Filename), PackageName) = 0 then
|
||||||
begin
|
begin
|
||||||
LazarusPkg := FindLazarusPackage(PackageName);
|
LazarusPkg := FindLazarusPackage(PackageName);
|
||||||
if LazarusPkg <> nil then
|
if LazarusPkg <> nil then
|
||||||
|
@ -1365,7 +1365,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
DependencyPkg := TLazarusPackage(SerializablePackages.Items[DataSearch^.PID].LazarusPackages.Items[DataSearch^.PFID]);
|
DependencyPkg := TLazarusPackage(SerializablePackages.Items[DataSearch^.PID].LazarusPackages.Items[DataSearch^.PFID]);
|
||||||
if (FVST.CheckState[NodeSearch] <> csCheckedNormal) and
|
if (FVST.CheckState[NodeSearch] <> csCheckedNormal) and
|
||||||
(UpperCase(DataSearch^.LazarusPackageName) = UpperCase(PkgFileName)) and
|
(CompareText(DataSearch^.LazarusPackageName, PkgFileName) = 0) and
|
||||||
((SerializablePackages.IsDependencyOk(TPackageDependency(PackageList.Items[I]), DependencyPkg)) and
|
((SerializablePackages.IsDependencyOk(TPackageDependency(PackageList.Items[I]), DependencyPkg)) and
|
||||||
((not (DependencyPkg.PackageState = psInstalled)) or ((DependencyPkg.PackageState = psInstalled) and (not (SerializablePackages.IsInstalledVersionOk(TPackageDependency(PackageList.Items[I]), DataSearch^.InstalledVersion)))))) then
|
((not (DependencyPkg.PackageState = psInstalled)) or ((DependencyPkg.PackageState = psInstalled) and (not (SerializablePackages.IsInstalledVersionOk(TPackageDependency(PackageList.Items[I]), DataSearch^.InstalledVersion)))))) then
|
||||||
begin
|
begin
|
||||||
|
@ -142,38 +142,41 @@ procedure TPackageUnzipper.Execute;
|
|||||||
var
|
var
|
||||||
I: Integer;
|
I: Integer;
|
||||||
DelDir: String;
|
DelDir: String;
|
||||||
|
MPkg: TMetaPackage;
|
||||||
begin
|
begin
|
||||||
Sleep(50);
|
Sleep(50);
|
||||||
FCnt := 0;
|
FCnt := 0;
|
||||||
FStartTime := GetTickCount64;
|
FStartTime := GetTickCount64;
|
||||||
for I := 0 to SerializablePackages.Count - 1 do
|
for I := 0 to SerializablePackages.Count - 1 do
|
||||||
begin
|
begin
|
||||||
if SerializablePackages.Items[I].IsExtractable then
|
MPkg := SerializablePackages.Items[I];
|
||||||
|
if MPkg.IsExtractable then
|
||||||
begin
|
begin
|
||||||
if FNeedToBreak then
|
if FNeedToBreak then
|
||||||
Break;
|
Break;
|
||||||
Inc(FCnt);
|
Inc(FCnt);
|
||||||
FCurPos := 0;
|
FCurPos := 0;
|
||||||
FZipFile := SerializablePackages.Items[I].RepositoryFileName;
|
FZipFile := MPkg.RepositoryFileName;
|
||||||
DelDir := FDstDir + SerializablePackages.Items[I].PackageBaseDir;
|
DelDir := FDstDir + MPkg.PackageBaseDir;
|
||||||
if FIsUpdate then
|
if FIsUpdate then
|
||||||
if DirectoryExists(DelDir) then
|
if DirectoryExists(DelDir) then
|
||||||
DeleteDirectory(DelDir, False);
|
DeleteDirectory(DelDir, False);
|
||||||
try
|
try
|
||||||
FUnZipper.Clear;
|
FUnZipper.Clear;
|
||||||
FUnZipper.FileName := FSrcDir + SerializablePackages.Items[I].RepositoryFileName;
|
FUnZipper.FileName := FSrcDir + MPkg.RepositoryFileName;
|
||||||
if SerializablePackages.Items[I].IsDirZipped then
|
if MPkg.IsDirZipped then
|
||||||
FUnZipper.OutputPath := FDstDir
|
FUnZipper.OutputPath := FDstDir
|
||||||
else
|
else
|
||||||
FUnZipper.OutputPath := FDstDir + SerializablePackages.Items[I].PackageBaseDir;
|
FUnZipper.OutputPath := FDstDir + MPkg.PackageBaseDir;
|
||||||
FUnZipper.OnProgressEx := @DoOnProgressEx;
|
FUnZipper.OnProgressEx := @DoOnProgressEx;
|
||||||
FUnZipper.Examine;
|
FUnZipper.Examine;
|
||||||
FUnZipper.UnZipAllFiles;
|
FUnZipper.UnZipAllFiles;
|
||||||
SerializablePackages.Items[I].ChangePackageStates(ctAdd, psExtracted);
|
MPkg.ChangePackageStates(ctAdd, psExtracted);
|
||||||
if (SerializablePackages.Items[I].IsDirZipped ) and (UpperCase(SerializablePackages.Items[I].PackageBaseDir) <> UpperCase(SerializablePackages.Items[I].ZippedBaseDir)) then
|
if (MPkg.IsDirZipped )
|
||||||
|
and (CompareText(MPkg.PackageBaseDir, MPkg.ZippedBaseDir) <> 0) then
|
||||||
begin
|
begin
|
||||||
CopyDirTree(FUnZipper.OutputPath + SerializablePackages.Items[I].ZippedBaseDir, DelDir, [cffOverwriteFile]);
|
CopyDirTree(FUnZipper.OutputPath + MPkg.ZippedBaseDir, DelDir, [cffOverwriteFile]);
|
||||||
DeleteDirectory(FUnZipper.OutputPath + SerializablePackages.Items[I].ZippedBaseDir, False);
|
DeleteDirectory(FUnZipper.OutputPath + MPkg.ZippedBaseDir, False);
|
||||||
end;
|
end;
|
||||||
Synchronize(@DoOnZipProgress);
|
Synchronize(@DoOnZipProgress);
|
||||||
FTotPos := FTotPos + FCurSize;
|
FTotPos := FTotPos + FCurSize;
|
||||||
@ -181,8 +184,8 @@ begin
|
|||||||
on E: Exception do
|
on E: Exception do
|
||||||
begin
|
begin
|
||||||
FErrMsg := E.Message;
|
FErrMsg := E.Message;
|
||||||
SerializablePackages.Items[I].ChangePackageStates(ctRemove, psExtracted);
|
MPkg.ChangePackageStates(ctRemove, psExtracted);
|
||||||
SerializablePackages.Items[I].ChangePackageStates(ctAdd, psError);
|
MPkg.ChangePackageStates(ctAdd, psError);
|
||||||
DeleteDirectory(DelDir, False);
|
DeleteDirectory(DelDir, False);
|
||||||
Synchronize(@DoOnZipError);
|
Synchronize(@DoOnZipError);
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user