📄 umath_class.pas
字号:
End;
Result:=Temp;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TBaseMath.fnsClear_F(Is_Str:String):String;
Var i:Integer;
Temp:String;
Begin
Temp:= Is_Str;
For i:=0 to 31 do
Begin
If Copy(Temp,1,1)='F' then
Temp:=Copy(Temp,2,Length(Temp)-1)
Else
Break;
End;
Result:=Temp;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TBaseMath.fnsAdd_No(IsString:string):String;
//'00001'+1='00002'
var
LiIndex,LiLen:integer;
Begin
LiLen:=Length(IsString);
for LiIndex:=LiLen Downto 1 do
Begin
IsString[LiIndex]:=chr(Byte(ord(IsString[LiLen])+1));
if IsString[LiIndex]<>'0' then Break;
End;
Result:=IsString;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TBaseMath.fnStrToDate(IsData_Str:String):TDateTime;
Begin
Try
Result:=EncodeDate(StrToInt(Copy(IsData_Str,1,4)),
StrToInt(Copy(IsData_Str,5,2)),
StrToInt(Copy(IsData_Str,7,2)));
Except On E:exception do
Result:=now;
End;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TBaseMath.fnStrToTime(IsData_Str:String):TDateTime;
Begin
Try
Result:=EncodeTime(StrToInt(Copy(IsData_Str,1,2)),
StrToInt(Copy(IsData_Str,3,2)),
StrToInt(Copy(IsData_Str,5,2)),0);
Except On E:exception do
Result:=now;
End;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TBaseMath.fnStrToDateTime(IsData_Str:String):TDateTime;
Var
LDate,LTime:TDateTime;
Begin
LDate:=fnStrToDate(Copy(IsData_Str,1,8));
LTime:=fnStrToTime(COpy(IsData_Str,9,6));
If (LDate=now) or (LTime=now) then
Result:=now
Else
Result:=LDate+LTime;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TBaseMath.ByteCircleShL(IiData,IiBitNum:Byte):Byte;
Var
LiData1,LiData2:Integer;
Begin
If IiBitNum>7 then
IiBitNum:=IiBitNum mod 8;
If IiBitNum=0 then
Begin
Result:=IiData;Exit;
end;
LiData2:=(IiData shL IiBitNum) and $00FF;
LiData1:=((IiData shL IiBitNum) and $FF00) shr 8;
Result:=Byte(LiData2+LiData1);
end;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TBaseMath.ByteCircleShR(IiData,IiBitNum:Byte):Byte;
Var
LiData1,LiData2:Integer;
Begin
If IiBitNum>7 then
IiBitNum:=IiBitNum mod 8;
If IiBitNum=0 then
Begin
Result:=IiData;Exit;
end;
LiData2:=IiData shr IiBitNum; //01001010 00010010 010010 10000000
LiData1:=((IiData shL (8-IiBitNum)) and $00FF);
Result:=Byte(LiData2+LiData1);
end;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Procedure TBaseMath.pClearErr;
Begin
FErrMsg.MsgType:=mtNone;
FErrMsg.ErrMsg :='';
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TBaseMath.fnsGetRandomStr(IiRandomStrLen:Integer):String;
Var
LiCount:Integer;
LsRandom:String;
Begin
For LiCount:=1 to IiRandomStrLen do
Begin
LsRandom:=LsRandom+intToHex(Random(255),2);
End;
Result:=LsRandom;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
function TBaseMath.fnsDecToBin(aValue: LongInt): String;
var
w: Array[1..2] of Word absolute aValue;
St: String;
function BinByte(b: Byte): String;
const
Bin: array[False..True] of Char = '01';
begin
Result := Bin[b and 128 = 128] + Bin[b and 64 = 64] + Bin[b and 32 = 32] + Bin[b and 16 = 16] +
Bin[b and 8 = 8] + Bin[b and 4 = 4] + Bin[b and 2 = 2] + Bin[b and 1 = 1];
end;
function BinWord(w: Word) : String;
begin
BinWord := BinByte(Hi(w)) + BinByte(Lo(w));
end;
begin
St := BinWord(w[2]) + BinWord(w[1]);
while (St[1] = '0') and (Length(St) > 1) do
Delete(St, 1, 1);
Result := St;
end;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
function TBaseMath.fnlBinToDec(aValue : String) : LongInt;
var
l : LongInt;
b : Byte;
begin
Result := 0;
if Length(aValue) = 0
then Exit;
l := 1;
b := Length(aValue) + 1;
repeat
dec(b);
if aValue[b] = '1'
then Result := Result + l;
l := l shl 1;
until b = 1;
end;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function fnsGetErrType(Err:TErrMsgRec):String;
Var
LsMsg:String;
Begin
Case Err.MsgType Of
mtSystem :LsMsg:='系统错误';
mtCard :LsMsg:='卡片错误';
mtApplication :LsMsg:='应用错误';
mtTransmit :LsMsg:='通讯错误';
mtNone :LsMsg:='无错误.';
mtCancel :LsMsg:='操作取消';
mtDB :LsMsg:='数据库访问错误';
mtTACErr :LsMsg:='交易数据验证错误';
mtMACErr :LsMsg:='报文数据验证错误';
mtLenErr :LsMsg:='报文数据长度错误';
mtUnPackErr :LsMsg:='报文数据解包错误';
mtIllegalConnect:LsMsg:='非法连接';
Else LsMsg:='未知错误';
End;
Result:=LsMsg;
end;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TMath.fnHexToInt(IsData:String):Integer;
Var
LiData:Integer;
Begin
fnbHex_To_Number(IsData,LiData);
Result:=LiData;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TMath.fnHexToWord(IsData:String):Word;
Var
LiData:Word;
Begin
fnbHex_To_Number(IsData,LiData);
Result:=LiData;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TMath.fnHexToLongWord(IsData:String):LongWord;
Var
LiData:LongWord;
Begin
fnbHex_To_Number(IsData,LiData);
Result:=LiData;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TMath.fnHexToInt64(IsData:String):Int64;
Var
LiData:Int64;
Begin
fnbHex_To_Number(IsData,LiData);
Result:=LiData;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TMath.fnStrToDateTime(IsData_Str:String):TDateTime;
Begin
Result:=inherited fnStrToDateTime(IsData_Str);
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TMath.fnsAdd_F(Is_Str:String):String;
Var i:Integer;
Temp:String;
Begin
Temp:= Is_Str;
For i:=0 to 31-Length(Is_Str) do
Begin
Temp:='F'+Temp;
End;
Result:=Temp;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
Function TMath.fnsClear_F(Is_Str:String):String;
Var i:Integer;
Temp:String;
Begin
Temp:= Is_Str;
For i:=0 to 31 do
Begin
If Copy(Temp,1,1)='F' then
Temp:=Copy(Temp,2,Length(Temp)-1)
Else
Break;
End;
Result:=Temp;
End;
//---------------------------------------------------------------------------------//
//
//---------------------------------------------------------------------------------//
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -