//
Unit Ads_Math; {Copyright(c)2016 Advanced Delphi Systems Richard Maley Advanced Delphi Systems 12613 Maidens Bower Drive Potomac, MD 20854 USA phone 301-840-1554 dickmaley@advdelphisys.com The code herein can be used or modified by anyone. Please retain references to Richard Maley at Advanced Delphi Systems. If you make improvements to the code please send your improvements to dickmaley@advdelphisys.com so that the entire Delphi community can benefit. All comments are welcome. } (*UnitIndex Master Index Implementation Section Download Units
Description: ads_Math.pas This unit contains the following routines.
Max Min Min_I NumVal Pi_Real Rand RandomInteger SetIntegerHiAndLo TEditKeyFilter.OnlyAToZ TEditKeyFilter.OnlyNumbers TEditKeyFilter.OnlyNumbersAbsolute TPanel_Cmp_Sec_ads.ResizeShadowLabel
*) Interface Uses SysUtils, ExtCtrls, StdCtrls, Ads_Strg, Ads_Misc; Function SetIntegerHiAndLo(HiValue,LoValue: Byte): Integer; {!~ Returns the larger of two numbers} Function Max(Number1, Number2: Single): Single; {!~ Returns the smaller of two numbers} Function Min(Number1, Number2: Single): Single; {!~ Returns the smaller of two integers } Function Min_I(Number1, Number2: Integer): Integer; {!~ Converts a string to an Extended floating point number} Function NumVal(InputString: String): Extended; {!~ Returns the constant pi as a real number} Function Pi_Real: Real; {!~ Returns A PseudoRandom Number Between 0 And 1} Function Rand: Integer; {!~ Returns A Random Number} Function RandomInteger(RandMin, RandMax: Integer): Integer; implementation Type TPanel_Cmp_Sec_ads = class(TPanel) Public procedure ResizeShadowLabel(Sender: TObject); End; //Unit Description UnitIndex Master Index
procedure TPanel_Cmp_Sec_ads.ResizeShadowLabel( Sender : TObject); Var PH, PW : Integer; LH, LW : Integer; begin PH := TPanel(Sender).Height; PW := TPanel(Sender).Width; LH := TLabel(Controls[0]).Height; LW := TLabel(Controls[0]).Width; TLabel(Controls[0]).Top := ((PH-LH) div 2)-3; TLabel(Controls[0]).Left := ((Pw-Lw) div 2)-3; end; Type TEditKeyFilter = Class(TEdit) Published {!~ Throws away all keys except 0-9,-,+,.} Procedure OnlyNumbers(Sender: TObject; var Key: Char); {!~ Throws away all keys except 0-9} Procedure OnlyNumbersAbsolute(Sender: TObject; var Key: Char); {!~ Throws away all keys except a-z and A-Z} Procedure OnlyAToZ(Sender: TObject; var Key: Char); End; {!~ Throws away all keys except 0-9,-,+,.} //Unit Description UnitIndex Master Index
Procedure TEditKeyFilter.OnlyNumbers(Sender: TObject; var Key: Char); Begin KeyPressOnlyNumbers(Key); End; {!~ Throws away all keys except 0-9} //Unit Description UnitIndex Master Index
Procedure TEditKeyFilter.OnlyNumbersAbsolute(Sender: TObject; var Key: Char); Begin KeyPressOnlyNumbersAbsolute(Key); End; {!~ Throws away all keys except a-z and A-Z} //Unit Description UnitIndex Master Index
Procedure TEditKeyFilter.OnlyAToZ(Sender: TObject; var Key: Char); Begin KeyPressOnlyAToZ(Key); End; {!~ Returns the larger of two numbers} //Unit Description UnitIndex Master Index
Function Max(Number1, Number2: Single): Single; Begin If Number1 > Number2 Then Begin Result := Number1; End Else Begin Result := Number2; End; End; {!~ Returns the smaller of two numbers} //Unit Description UnitIndex Master Index
Function Min(Number1, Number2: Single): Single; Begin If Number1 < Number2 Then Begin Result := Number1; End Else Begin Result := Number2; End; End; {!~ Returns the smaller of two integers } //Unit Description UnitIndex Master Index
Function Min_I(Number1, Number2: Integer): Integer; Begin If Number1 < Number2 Then Begin Result := Number1; End Else Begin Result := Number2; End; End; {!~ Converts a string to an Extended floating point number} //Unit Description UnitIndex Master Index
Function NumVal(InputString: String): Extended; Begin Result := 0; InputString := NumbersOnly(InputString); Try Result := StrToFloat(InputString); Except End; End; {!~ Returns the constant pi as a real number} //Unit Description UnitIndex Master Index
Function Pi_Real: Real; Begin Result := Pi; End; {!~ Returns A PseudoRandom Number Between 0 And 1} //Unit Description UnitIndex Master Index
Function Rand: Integer; Begin Result := RandomInteger(0,1); End; {!~ Returns A Random Number} //Unit Description UnitIndex Master Index
Function RandomInteger(RandMin, RandMax: Integer): Integer; Var RandRange: Integer; RandValue: Integer; Begin If RandMax <= RandMin Then Begin Result := RandMin; Exit; End; Randomize; RandRange := RandMax-RandMin; RandValue := Random(RandRange); Result := RandValue + RandMin; End; //Unit Description UnitIndex Master Index
Function SetIntegerHiAndLo(HiValue,LoValue: Byte): Integer; Var inLo : Integer; inHi : Integer; inResult : Integer; Begin inLo := LoValue; inHi := HiValue; inResult := (256*inHi)+inLo; Result := inResult; End; End. //