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

📄 hutil32.pas

📁 飘飘M2 本人更新加入英雄系统 修正BUG 全套的源码上传 不看要后悔啊!
💻 PAS
字号:
unit HUtil32;

interface

uses
  SysUtils;

function Str_ToInt (Str: string; def: Longint): Longint;
function GetValidStr3 (Str: string; var Dest: string; const Divider: array of Char): string;
implementation

function Str_ToInt (Str: string; def: Longint): Longint;
begin
   Result := def;
   if Str <> '' then begin
      if ((word(Str[1]) >= word('0')) and (word(str[1]) <= word('9'))) or
         (str[1] = '+') or (str[1] = '-') then
         try
            Result := StrToInt64Def (Str,def);
            //Result := StrToInt64 (Str);
            //Result := StrToIntDef (Str,def);
         except
         end;
   end;
end;

function GetValidStr3 (Str: string; var Dest: string; const Divider: array of Char): string;
const
   BUF_SIZE = 20480; //$7FFF;
var
  Buf: array[0..BUF_SIZE] of char;
  nBufCount, nCount, nSrcLen, I, nArrCount: Longint;
  Ch: char;
label
	CATCH_DIV;
begin
  Ch:=#0;//Jacky
  try
  nSrcLen   := Length(Str);
  nBufCount := 0;
  nCount    := 1;

  if nSrcLen >= BUF_SIZE - 1 then begin
    Result := '';
    Dest := '';
    exit;
  end;

  if Str = '' then begin
    Dest := '';
    Result := Str;
    exit;
  end;
  nArrCount := sizeof(Divider) div sizeof(char);

  while TRUE do begin
    if nCount <= nSrcLen then begin
      Ch := Str[nCount];
      for I:=0 to nArrCount - 1 do
        if Ch = Divider[I] then
          goto CATCH_DIV;
    end;
    if (nCount > nSrcLen) then begin
      CATCH_DIV:
      if (nBufCount > 0) then begin
        if nBufCount < BUF_SIZE-1 then begin
          Buf[nBufCount] := #0;
          Dest := string (Buf);
          Result := Copy (Str, nCount + 1, nSrcLen - nCount);
          end;
          break;
      end else begin
        if (nCount > nSrcLen) then begin
          Dest := '';
          Result := Copy (Str, nCount + 2, nSrcLen -1);
          break;
        end;
      end;
    end else begin
      if nBufCount < BUF_SIZE - 1 then begin
        Buf[nBufCount] := Ch;
        Inc(nBufCount);
      end;// else
               //ShowMessage ('BUF_SIZE overflow !');
    end;
    Inc (nCount);
  end;
   except
      Dest := '';
      Result := '';
   end;
end;
end.

⌨️ 快捷键说明

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