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

📄 u_stringpublicpack.pas

📁 软件功能:下载一个网站上所有的彩铃! 铃声下载完后
💻 PAS
📖 第 1 页 / 共 2 页
字号:

//缓冲区转化为字符串
Function BufToStr(Buf:Buffer;Var Start:Integer;Len:Byte):String;
Var
  Str:String;
Begin
  SetLength(Str,Len);
  CopyMemory(@Str[1],buf+Start,len);
  Start:=Start+Len;
  Result:=Str;
End;

//字符串转化为缓冲区
Procedure StrToBuf(Var Buf:Buffer;Str:String;Var Start:Integer;Len:Integer);
Begin
  FillMemory(Buf+Start,Len,0);
  CopyMemory(Buf+Start,@Str[1],Len);
  Start:=Start+Len;
End;

//字节转化为整数
Function Byte4ToInt(Count:Byte4):LongWord;             
Begin
  Result:=Count[0]*16777216+Count[1]*65536+Count[2]*256+Count[3];
End;

//整数转化为字节
Function IntToByte4(MakeData:Longword):Byte4;            
Var
  Count:Integer;
  Temp:Byte4;
Begin
  For Count:=3 DownTo 0 Do
  Begin
    temp[Count]:=MakeData Mod 256;
    MakeData:=MakeData Div 256;
  End;
  Result:=Temp;
End;

//加密缓冲区
Function AddKeyOfBuf(InBuf:buffer;Key:String;Var OutBuf:Buffer;BufLen,OffSet:Integer):Integer;
Var
  Des:TDes;
  InTempBuf,OutTempBuf:Buffer;
  i,Count:integer;
Begin
  For i:= OffSet To BufLen-1 Do
  Begin
    InTempBuf[i-OffSet]:=InBuf[i];
  End;
  Count:=BufLen-OffSet;
  BufLen:=(((Count-1) div 8)+1)*8;
  If Count<BufLen Then
    For i:=Count To BufLen-1 Do
      InTempBuf[i]:=#0;
  Result:=BufLen+OffSet;
  Des:=TDes.Create(nil);
  Try
    Des.Key:=Key;
    Des.InputLength:=BufLen;
    Des.pInputArray:=@InTempBuf;
    Des.poutputArray:=@OutTempBuf;
    Des.InputType:=SourceByteArray;
    Des.EncipherData(false);
    For i:=0 To OffSet-1 Do
      OutBuf[i]:=inBuf[i];
    For i:=OffSet To Offset+BufLen-1 Do
      OutBuf[i]:=OutTempBuf[i-Offset];
  Except
    Result:=0;
  End;
  Des.Free;
End;

//解密缓冲区
Function DeleteKeyOfBuf(InBuf:Buffer;Key:string;Var OutBuf:Buffer;BufLen,OffSet:integer):Integer;
Var
  Des:TDes;
  InTempBuf,OutTempBuf:Buffer;
  i,Count:Integer;
Begin
  Result:=1;
  Count:=BufLen-OffSet;
  If (Count Mod 8)<>0 Then
  Begin
    Result:=0;
    Exit;
  End;
  For i:=OffSet To BufLen-1 Do
  Begin
    InTempBuf[i-OffSet]:=InBuf[i];
  End;
  Des:=TDes.Create(nil);
  Try
    Des.Key:=Key;
    Des.InputLength:=Count;
    Des.PInputArray:=@InTempBuf;
    Des.PoutputArray:=@OutTempBuf;
    Des.InputType:=SourceByteArray;
    Des.DecipherData(false);
    For i:=0 To OffSet-1 Do
      OutBuf[i]:=InBuf[i];
    For i:=OffSet To BufLen Do
      OutBuf[i]:=OutTempBuf[i-OffSet];
  Except
    Result:=0;
  End;
  Des.Free;
End;
//获取指定时间的当月总的天数
Function GetDaysOfMonth(CurrentDate:TDatetime):Integer;
Var
  Current:TDateTime;
  Str:String;
Begin
  Str:=FormatDateTime('YYYY-MM',IncMonth(CurrentDate))+'-01';
  Current:=StrToDateTime(Str);
  Result:=DayOf(Current-1);
End;
//判断一个串是否是小于等于Len个字
Function IsLessSomeWordFromStr(Str:String;Len:Integer):Boolean;
Var
  WordCount,Index,StrLen:Integer;
Begin
  Result:=True;
  //获取字符串的字节数目
  StrLen:=Length(Str);
  //处始设置字数为0
  WordCount:=0;
  Index:=1;
  //遍历整个字符串
  While Index<=StrLen Do
  Begin
    //判断字数是否大于Len个字
    If WordCount>Len Then
    Begin
      Result:=False;
      //退出群环
      Break;
    End;
    //判断该字符是否是汉字还是普通字符
    If Str[Index]>#127 Then
      Index:=Index+2
    Else
      Index:=Index+1;
    //字数递增1
    Inc(WordCount);
  End;
  //判断字数是否小于等于Len个字同时索引小于字符串长度
  If (WordCount<=Len) And (Index>=StrLen) Then
    //返回原串
    Result:=True
  Else
    Result:=False;
End;
//获取一个串的Len个字
Function GetSomeWordFromStr(Var Str:String;Len:Integer):String;
Var
  WordCount,Index,StrLen:Integer;
Begin
  //获取字符串的字节数目
  StrLen:=Length(Str);
  //处始设置字数为0
  WordCount:=0;
  Index:=1;
  //遍历整个字符串
  While Index<=StrLen Do
  Begin
    //判断字数是否大于Len个字
    If WordCount>=Len Then
    Begin
      Result:=Copy(Str,1,Index-1);
      //获取字符串前Len个字
      Str:=Copy(Str,Index,StrLen-Index+1);
      //退出函数
      Exit;
    End;
    //判断该字符是否是汉字还是普通字符
    If Str[Index]>#127 Then
      Index:=Index+2
    Else
      Index:=Index+1;
    //字数递增1  
    Inc(WordCount);
  End;
  //判断字数是否小于等于Len个字同时索引小于字符串长度
  If (WordCount<=Len) And (Index>=StrLen) Then
  Begin
    //返回原串
    Result:=Str;
    Str:='';
  End;
End;
//获取一个串的字数
Function GetWordCountOfStr(Str:String):Integer;
begin
  Result := Length(Trim(Str));
end;
{Var
  WordCount,Index,StrLen:Integer;
Begin
  StrLen:=Length(Str);
  WordCount:=0;
  Index:=1;
  While Index<=StrLen Do
  Begin
    If Str[Index]>#127 Then
      Index:=Index+2
    Else
      Index:=Index+1;
    Inc(WordCount);
  End;
  Result:=WordCount;
End;}
//获取一段时间内总的天数
Function GetDays(StartDate,EndDate:TDateTime):Integer;
Var
  Current:TDateTime;
  Str:String;
  Count,StartMonth,EndMonth:Integer;
Begin
  StartMonth:=MonthOf(StartDate);
  EndMonth:=MonthOf(EndDate);
  If StartMonth>EndMonth Then
  Begin
    Result:=-1;
    Exit;
  End;           
  If StartMonth=EndMonth Then
  Begin
    Result:=DayOf(EndDate)-DayOf(StartDate);
    Exit;
  End;
  Current:=StartDate;
  Result:=GetDaysOfMonth(StartDate)-DayOf(StartDate);
  For Count:=StartMonth+1 To EndMonth Do
  Begin
    If Count=EndMonth Then
    Begin
      Result:=Result+DayOf(EndDate);
      Continue;
    End;
    Current:=IncMonth(Current);
    Result:=Result+GetDaysOfMonth(Current);
  End;
End;
//判断是否是数字数据
Function IsNumberData(Key:Char):Integer;
Begin
  If Not (Key In ['0'..'9']) Then
  Begin
    Key:=#0;
    Result:=1;
  End
  Else
    Result:=0;
End;
//判断是否是字符数据
Function IsCharData(Key:Char):Integer;
Begin
  If Not ((Key In ['a'..'z']) Or (Key In ['A'..'Z'])) Then
  Begin
    Key:=#0;
    Result:=1;
  End
  Else
    Result:=0;
End;
//判断是否是字符或数字数据
Function IsNumCharData(Key:Char):Integer;
Begin
  If Not ((Key In ['0'..'9']) Or (Key In ['a'..'z']) Or (Key In ['A'..'Z'])) Then
  Begin
    Key:=#0;
    Result:=1;
  End
  Else
    Result:=0;
End;
//分解一个字符串Str中包含子字符串Chr的两个子字符串(PreStr和NextStr)
Procedure GetPreStrFromStrOfChr(Chr,Str:String);
Var
  PreStr,NextStr:String;
  ChrLen,StrLen,Position:Integer;
Begin
  ChrLen:=Length(Chr);//替换串长度
  StrLen:=Length(Str);//原串长度
  Position:=Pos(Chr,Str);//获取原串中包含替换串的位置
  If Position=0 Then
  Begin
    PreStr:=Str;
    NextStr:='';
    If PreStr='' Then
      Exit;
    {
    **************************
    ***对PreStr字符串的操作***
    **************************
    }
    Exit;
  End
  Else
  Begin
    If Position=1 Then
    Begin
      PreStr:='';
      NextStr:=Copy(Str,Position+ChrLen,StrLen-ChrLen-Position+1);
    End
    Else
    Begin
      PreStr:=Copy(Str,1,Position-1);
      NextStr:=Copy(Str,Position+ChrLen,StrLen-ChrLen-Position+1);
    End;
  End;
  {
  **************************
  ***对PreStr字符串的操作***
  **************************
  }
  GetPreStrFromStrOfChr(Chr,NextStr);
End;
//截取浮点型的两位小位数
Function FormatFlt2Str(Inflt:Real):String;
Begin
  Try
    If inflt<0 Then
    Begin
      Result:=FormatFloat('0.00',Inflt);
    End
    Else
    Begin
      Result:='+'+FormatFloat('0.00',Inflt);
    End;
  Except
  End;
End;

End.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -