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

📄 ufunctions.~pas

📁 UDP 传输过程中
💻 ~PAS
字号:
unit UFunctions;

interface
uses
  Windows, Forms,Messages, SysUtils,  Classes, Controls;


    function GetAppPath:String;
    Function showstr(str:string;F:boolean=False;Titlestr:string='注意'):boolean;
    Function BoolToString(b:boolean):string;
    Function StringToBool(s:string):Boolean;
    Function StringToint(s:string):integer;
    Function HexStringToint(s:string):integer;
    Function MinValue(a,b:integer):integer;
    Function SeperaStr(S:string;Var arrString:array of string;Sp:char=';';ConSp:char='\'):integer;
Function NextSplitField(var S1 : string;StartChar:String='[';EndChar:String=']') : string;
Function StringSplit(src:String;dest:TStrings;StartChar:String='[';EndChar:String=']'):integer;
    //当src为 [1],[2],[3]时  调用:StringSplit(src,dest,'[',']'),把1,2,3返回至dest中
function Pos_(Substr: string; S: string;StartPos:integer): Integer;
    //pos函数的改进版,多了一个StartPos的参数,是从第几个字符开始找起
Function AllIsDigit(s:string):boolean;
Function AllIsNumber(s:string):boolean;

implementation


function GetAppPath:String;
begin
    GetAppPath:=ExtractFilePath(Application.ExeName);
end;
Function showstr(str:string;F:boolean=False;Titlestr:string='注意'):boolean;
begin
      result:=False;
      if not F then
      begin
          application.MessageBox(pchar(str),pchar(titlestr),MB_OK);
          exit;
      end;
      result:=application.MessageBox(pchar(str),pchar(titlestr),MB_OKCancel)=IDOK;
end;

Function BoolToString(b:boolean):string;
begin
    if b
    then result:='True'
    else result:='False';
end;
Function StringToBool(s:string):Boolean;
begin
    if stricomp(pchar(s),'true')=0
    then result:=True
    else result:=False;
end;
Function StringToint(s:string):integer;
begin
    result:=0;
    s:=trim(s);
    if s='' then exit;
    try
      result:=strtoint(s);
    Except
      result:=0;
    end;
end;
Function HexStringToint(s:string):integer;
begin
    if (pos('$',Uppercase(s))=0) then s:='$'+s;
    result:=StringToint(s);
end;
Function MinValue(a,b:integer):integer;
begin
    if a>b then
       result:=b
    else
       result:=a;
end;

Function SeperaStr(S:string;Var arrString:array of string;Sp:char=';';ConSp:char='\'):integer;
var i,DivideStart,iLen:integer;
    s1,s2:string;
    IsESC:boolean;//表明当前字符是否转义符  "\\" 中第一个\true,第二个就False了
begin
    result:=0;
    DivideStart:=1; //分割串的首字符位置
    IsESC:=False;
    i:=1;
    iLen:=Length(s);
    while i<=iLen do
    begin
        if s[i]=ConSp then
           IsESC:=not IsESC
        else
        begin  //sp为 分隔符 ,如果当前是转义符号,那么当前位置为普通符号 'xxx\|xxx' 不需要分割
             if (s[i]=sp) and (not IsESC) then  //如果当前不是转义符,那么就要分割 'xxx|xxx' 'xxx\\|xxx'
             begin
                 if result<=high(arrString) then
                 begin
                    arrString[result]:=copy(s,DivideStart,i-1);
                    inc(result);
                 end;
                 DivideStart:=i+1;
             end;
             IsESC:=false;
        end;
        inc(i);
    end;
    if (DivideStart<=iLen) and  (result<=high(arrString)) then
    begin
      arrString[result]:=copy(s,DivideStart,i-1);
      inc(result);
    end;
end;
Function NextSplitField(var S1 : string;StartChar:String='[';EndChar:String=']') : string;
 var
  p1,p2: integer;
begin
  p1 := Pos(StartChar, S1);
  p2 := Pos(EndChar, S1);
  if p2<p1 then p2:=p1;
  if (P1>0) and (P2>p1 ) then
  begin
       Result := Copy(S1,p1+1,p2-p1-1);
       Delete(S1,1, p2);
  end
  else
  begin Result := '';S1 := ''; end
end;
Function StringSplit(src:String;dest:TStrings;StartChar:String;EndChar:String):integer;
var
    iPos1,iPos2,iRet:integer;
    tmpStr:String;
begin
    iPos1:=0;
    iPos2:=1;
    iRet:=0;
    dest.Clear;
    while iPos2>0 do
    begin
        iPos1:=Pos_(StartChar,src,iPos1+1);
        if iPos1>0 then
        begin
            iPos2:=Pos_(EndChar,src,iPos1+1);
            if iPos2>0 then
            begin
                tmpStr:=Copy(src,iPos1+1,iPos2-iPos1-1);
                dest.Add( tmpStr);
                INC(iRet);
            end;
        end
        else
            iPos2:=0;
    end;
    Result:=iRet;
end;

function Pos_(Substr: string; S: string;StartPos:integer): Integer;
var
    iRet:integer;
    tmpStr:String;
begin
    iRet:=0;
    if length(S)>=(StartPos+Length(substr)-1) then
    begin
        tmpStr:=Copy(s,StartPos,Length(s)-StartPos+1);
        iRet:=Pos(substr,tmpStr);
        if iRet>0 then iRet:=iRet+StartPos-1;
    end;
    Result:=iRet;
end;

Function AllIsDigit(s:string):boolean;
var pStr:pchar;
begin
    result:=False;
    pStr:=pchar(s);
    while pStr^<>#0 do
    begin
        if (pStr^<'0') or (pStr^>'9') then Exit;
        inc(pStr);
    end;
    result:=True;
end;
Function AllIsNumber(s:string):boolean;
var pStr:pchar;
begin
    pStr:=pchar(s);
    while pStr^<>#0 do
    begin
        if not (pStr^ in ['0'..'9','A'..'F','a'..'e']) then exit;
        inc(pStr);
    end;
    result:=True;
end;
end.

⌨️ 快捷键说明

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