浏览代码

small changes

Unknown 6 年之前
父节点
当前提交
4f79a5bb3f
共有 1 个文件被更改,包括 82 次插入15 次删除
  1. 82 15
      Quick.Commons.pas

+ 82 - 15
Quick.Commons.pas

@@ -7,7 +7,7 @@
   Author      : Kike Pérez
   Version     : 1.5
   Created     : 14/07/2017
-  Modified    : 13/08/2018
+  Modified    : 19/09/2018
 
   This file is part of QuickLib: https://github.com/exilon/QuickLib
 
@@ -101,7 +101,7 @@ type
 
   {$IFNDEF FPC}
   TFileHelper = record helper for TFile
-    {$IFDEF MSWINDOWS}
+    {$IF DEFINED(MSWINDOWS) OR DEFINED(DELPHILINUX)}
     class function IsInUse(const FileName : string) : Boolean; static;
     {$ENDIF}
     class function GetSize(const FileName: String): Int64; static;
@@ -198,6 +198,8 @@ type
   function FillStr(const C : Char; const Count : Byte) : string;
   //checks if string exists in array of string
   function StrInArray(const aValue : string; const aInArray : array of string) : Boolean;
+  //checks if integer exists in array of integer
+  function IntInArray(const aValue : Integer; const aInArray : array of Integer) : Boolean;
   //returns a number leading zero
   function Zeroes(const Number, Len : Int64) : string;
   //converts a number to thousand delimeter string
@@ -247,6 +249,8 @@ type
   function CountDigits(anInt: Cardinal): Cardinal; inline;
   //save stream to file
   procedure SaveStreamToFile(stream : TStream; const filename : string);
+  //returns a real comma separated text from stringlist
+  function CommaText(aList : TStringList) : string;
   {$IFDEF MSWINDOWS}
   //process messages on console applications
   procedure ProcessMessages;
@@ -256,6 +260,7 @@ type
   {$IF DEFINED(FPC) AND DEFINED(MSWINDOWS)}
   function GetLastInputInfo(var plii: TLastInputInfo): BOOL;stdcall; external 'user32' name 'GetLastInputInfo';
   {$ENDIF}
+  function RemoveLastChar(const aText : string) : string;
 
 {$IFDEF MSWINDOWS}
 var
@@ -293,6 +298,21 @@ begin
   end;
 end;
 {$ENDIF}
+{$IFDEF DELPHILINUX}
+class function TFileHelper.IsInUse(const FileName : string) : Boolean;
+var
+  fs : TFileStream;
+begin
+  try
+    fs := TFileStream.Create(FileName, fmOpenReadWrite, fmShareExclusive);
+    Result := True;
+    fs.Free;
+  except
+    Result := False;
+  end;
+
+end;
+{$ENDIF}
 
 {$IFDEF MSWINDOWS}
 class function TFileHelper.GetSize(const FileName: String): Int64;
@@ -546,6 +566,17 @@ begin
   Result := False;
 end;
 
+function IntInArray(const aValue : Integer; const aInArray : array of Integer) : Boolean;
+var
+  i : Integer;
+begin
+  for i in aInArray do
+  begin
+    if i = aValue then Exit(True);
+  end;
+  Result := False;
+end;
+
 function Zeroes(const Number, Len : Int64) : string;
 begin
   if Len > Length(IntToStr(Number)) then Result := FillStr('0',Len - Length(IntToStr(Number))) + IntToStr(Number)
@@ -683,7 +714,7 @@ function GetComputerName : string;
     Result := pchar(result);
   end;
 {$ELSE}
-  {$IF DEFINED(FPC) AND DEFINED(LINUX)}
+  {$IF DEFINED(FPC) OR DEFINED(LINUX)}
   begin
     Result := GetEnvironmentVariable('COMPUTERNAME');
   end;
@@ -814,12 +845,18 @@ end;
       else Result := '';
   end;
   {$ELSE}
-  var
-    PkgInfo : JPackageInfo;
-  begin
-    PkgInfo := SharedActivity.getPackageManager.getPackageInfo(SharedActivity.getPackageName,0);
-    Result := IntToStr(PkgInfo.VersionCode);
-  end;
+    {$IFDEF NEXTGEN}
+    var
+      PkgInfo : JPackageInfo;
+    begin
+      PkgInfo := SharedActivity.getPackageManager.getPackageInfo(SharedActivity.getPackageName,0);
+      Result := IntToStr(PkgInfo.VersionCode);
+    end;
+    {$ELSE}
+    begin
+      Result := 'N/A';
+    end;
+    {$ENDIF}
   {$ENDIF}
 {$ENDIF}
 
@@ -876,12 +913,18 @@ end;
       else Result := '';
   end;
   {$ELSE}
-  var
-    PkgInfo : JPackageInfo;
-  begin
-    PkgInfo := SharedActivity.getPackageManager.getPackageInfo(SharedActivity.getPackageName,0);
-    Result := JStringToString(PkgInfo.versionName);
-  end;
+    {$IFDEF NEXTGEN}
+    var
+      PkgInfo : JPackageInfo;
+    begin
+      PkgInfo := SharedActivity.getPackageManager.getPackageInfo(SharedActivity.getPackageName,0);
+      Result := JStringToString(PkgInfo.versionName);
+    end;
+    {$ELSE}
+    begin
+      Result := 'N/A';
+    end;
+    {$ENDIF}
   {$ENDIF}
 {$ENDIF}
 
@@ -991,6 +1034,25 @@ begin
   end;
 end;
 
+function CommaText(aList : TStringList) : string;
+var
+  value : string;
+  sb : TStringBuilder;
+begin
+  if aList.Text = '' then Exit;
+  sb := TStringBuilder.Create;
+  try
+    for value in aList do
+    begin
+      sb.Append(value);
+      sb.Append(',');
+    end;
+    if sb.Length > 1 then Result := sb.ToString(0, sb.Length - 1);
+  finally
+    sb.Free;
+  end;
+end;
+
 { TCounter }
 
 procedure TCounter.Init(aMaxValue : Integer);
@@ -1068,6 +1130,11 @@ begin
 end;
 {$ENDIF}
 
+function RemoveLastChar(const aText : string) : string;
+begin
+  Result := aText.Remove(aText.Length - 1);
+end;
+
 {$IFDEF MSWINDOWS}
 initialization
   try