View Single Post
  #200  
Old 28-03-2023, 07:18
BLACKFIRE69's Avatar
BLACKFIRE69 BLACKFIRE69 is offline
Registered User
 
Join Date: Mar 2019
Location: In the Hell
Posts: 688
Thanks: 481
Thanked 2,547 Times in 561 Posts
BLACKFIRE69 is on a distinguished road
Arrow FMXInno v1.0.0.2 - Updates

What's new:

Code:
* Merged ISArcEx into FMXInno.
  - need to be tested to make sure everything is ok.

* Added new function FXMathExp (which parses math expressions).
  - function FXMathExp(Exp: WideString): Double;
  - it's different from the Calc function in MFT.


Code:
----------ISArcEx----------:

>> remove the following lines highlighted in red from your current script.


[Files]
// External
Source: ".\Unpack\English.ini"; DestDir: {tmp}; Flags: dontcopy
//Source: ".\Unpack\Russian.ini"; DestDir: {tmp}; Flags: dontcopy
Source: ".\Unpack\arc.ini"; DestDir: {tmp}; Flags: dontcopy
Source: ".\Unpack\unarc.dll"; DestDir: {tmp}; Flags: dontcopy
Source: ".\Unpack\ISArcEx.dll"; DestDir: {tmp}; Flags: dontcopy


[Code]

{ ISArcEx v0.4 }
var
  ISArcExDiskCount: Integer;
  ISArcExCancel: integer;
  ISArcExError: boolean;
  ISArcDiskAddingSuccess: boolean;

type
  TCallback = function(OverallPct, CurrentPct, DiskTotalMB, DiskExtractedMB: Integer; DiskName, CurrentFile, TimeStr1, TimeStr2, TimeStr3, Speed: WideString): LongWord;

function ISArcExInit(WinHandle: Longint; TimeFormat: Integer; Callback: TCallback): Boolean; external 'ISArcExInit@files:FMXInno.dll stdcall';
function ISArcExAddDisks(Inputfile, Password, OutputPath: Widestring): Boolean; external 'ISArcExAddDisks@files:FMXInno.dll stdcall';
function ISArcExExtract(DiskNumber: Integer; CfgFile, WorkPath: Widestring): Boolean; external 'ISArcExExtract@files:FMXInno.dll stdcall';
function SuspendProc: Boolean; external 'SuspendProc@files:FMXInno.dll stdcall';
function ResumeProc: Boolean; external 'ResumeProc@files:FMXInno.dll stdcall';
procedure ISArcExStop; external 'ISArcExStop@files:FMXInno.dll stdcall';
procedure ISArcExCleanUp; external 'ISArcExCleanUp@files:FMXInno.dll stdcall';
function ChangeLanguage(Language: Widestring): boolean; external 'ChangeLanguage@files:FMXInno.dll stdcall';
function Exec2(filename, Param: WideString; Show: Boolean): Boolean; external 'Exec2@files:FMXInno.dll stdcall';
{ - End - }


Code:
----------FXMathExp---------:

var
  Exp, Ans: String;

function InitializeSetup(): Boolean;
begin
  Exp := 'Sin(Pi/6) + ATan(1) * (Pow(7*2,2) - (Fact(4) - Floor(8.46))) / Pi + Sqrt(Abs(-553 + Sqrt(9) * LogN(2, 2) / 2^2))';

  Ans := Format('%0.2n', [FXMathExp(Exp)]);  // Ans = 69.00
  
  MsgBox('answer: ' + Ans, mbInformation, MB_OK);
  result:= False;
end;
Code:
Numeric Operators:
x + y, x - y, x * y, x / y, x % y (or Mod), 
x ^ y [Power], x \ y (or Div)

Comparison Operators:
x > y, x < y, x >= y, x <= y, x = y, x <> y, 
!x (not), x & y (and), x | y (or), x xor y

Logical operators:
& (and), | (or), xor, ! (not)

Logical Functions:
iff(e, x, y) -> iff(10 > 3, 1, 0) = 1
isnumber('x')-> isnumber('25') = 1

Bitwise operations:
x && y (band), x || y (bor), !!x (bnot), 
x bxor y, x >> y (shr), x << y (shl)
Code:
Statistical Functions:
max	     -> max(2, 4.87, 0.24, 10.0, 11)
min	     -> min(3, 4, 7.4, 11.0)
sum	     -> sum(0.25, 4.0, 11, 8)
avg	     -> avg(7, 3, 5)
count        -> count(x,y,z,...)
stddev       -> stddev(x,y,z,...)	- standard deviation (unbiased)
stddevp      -> stddevp(x1,x2,...)	- standard deviation (biased)
sumofsquares -> sumofsquares(x,y,...)	- sum of passed values squares
variance     -> variance(x,y,...) 	- variance (unbiased)
variancep    -> variancep(x,y,...)	- variance (biased)

String Functions:
number	 -> number("+835xyz") = 835, number("2e2") = 200
length(s) - length of the string.
pos(t, s) - returns the index value of the first character of t that occurs in s.
hex(s) 	  - returns numeric value for hexadecimal string.

Sign of a number:
sign	-> sign(-5) = -1, sign(5) = 1, sign(0) = 0
Code:
Predefined Constants:
Pi	= 3.1415926535897932385
e	= 2.71828182845905
True	= 1
False	= 0

Exponent of 10:
e	-> 1e+3 or le3 = 1000 

Trigonometric, hyperbolic and invert functions:
sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), 
cosh(x), sinh(x), tanh(x), 
asinh(x), acosh(x), atanh(x), sinD(x), cosD(x), tanD(x),
RadToDeg(x), DegToRad(x)

Exponential and logarithmic functions:
log(x), lg(x) (log base 10), ln(x), LogN(x, y), exp(x), 
sqrt(x), sqr(x), Pow(x, y), Ldexp(x, y), LnXP1(x)

Numeric and factional part of number:
abs	-> abs(-24)
Int	-> Int(1.951) = 1
frac	-> Frac(12.75) = 0.75
ceil	-> Ceil(-2.8) = -2, Ceil(2.8) = 3
floor	-> Floor(-2.8) = -3, Floor(2.8) = 2
Round	-> Round(1234567, -3) = 1235000, Round(1.235, 2) = 1.24
Trunc	-> Trunc(1234567, -3) = 1234000, Trunc(1.235, 2) = 1.23
Fact	-> Fact(4) = 24  - Factorial

Random number generator:
rnd, randomize

Last edited by BLACKFIRE69; 31-03-2023 at 09:53.
Reply With Quote
The Following 4 Users Say Thank You to BLACKFIRE69 For This Useful Post:
audiofeel (28-03-2023), ffmla (28-03-2023), hitman797 (28-03-2023), Razor12911 (29-03-2023)