⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 umath_class.pas

📁 数值字符串进制转换
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  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 + -