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

📄 usysfunc.pas

📁 一个小程序
💻 PAS
📖 第 1 页 / 共 4 页
字号:
  i, size: Integer;
begin
  i := Pos(#32, s); // 寻找空格的位置
  if i = 0 then
  begin
    Result := s;
    Exit;
  end;

  size := Length(s) - i; // 计算剩余字符串的长度
  Move(s[i + 1], s[i], size);
  SetLength(s, size);
  Result := s;
end;

//=======================================================================
// 名称:	RemoveFirstWord
// 说明:	删除一个字符串中的第一个词,修改原字符串。
// 参数:	s:String
//				需要处理的字符串
// 返回:	String
//				字符串的第一个词
// 编程: 	张新民,2008.12.11
//=======================================================================
function RemoveFirstWord(var s: string): string;
var
  i, size: Integer;
begin
  i := Pos(#32, s); // 寻找空格的位置
  if i = 0 then
  begin
    Result := '';
    Exit;
  end;

  size := Length(s) - i; // 计算剩余字符串的长度
  Result := Trim(Copy(s, 1, i - 1));
  Move(s[i + 1], s[i], size);
  SetLength(s, size);
end;

//=======================================================================
// 名称:	StrParsing
// 说明:	把句子分解成单词添加到字符串表中。
// 参数:	s:String
//				需要处理的字符串
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
procedure StrParsing(s: string; lst: TStringList);
var
  s1: string;
begin
  repeat
    s := StripFrontChars(s, #32);
    s1 := RemoveFirstWord(s);
    if s1 <> '' then
      lst.Add(s1);
  until s = '';
  if s <> '' then
    lst.Add(s);
end;

//=======================================================================
// 名称:	SplitStr
// 说明:	根据指定子串的位置,把一个字符串分解成两部分。
// 参数:	sStr:String
//				需要处理的字符串
//			sSubStr: String
//				子串
//			sFlag:String
//				分割选项,'L'-结果取左面,'R'或其它-结果取右面
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function SplitStr(const sStr, sSubStr, sFlag: string): string;
begin
  if UpperCase(sFlag) = 'L' then
  begin
    if Pos(sSubStr, sStr) < 1 then
      Result := sStr
    else
      Result := Copy(sStr, 1, Pos(sSubStr, sStr) - 1);
  end
  else
    Result := Copy(sStr, Pos(sSubStr, sStr) + 1,
      Length(sStr) - Pos(sSubStr, sStr));
end;

//=======================================================================
// 名称:    RightJustifyPadZero
// 说明:	把一个整数转换成字符串,右对齐,前面补0。
// 参数:	lValue:LongInt
//				被转换的整数值
//			nLen: Integer
//				转换后的字符串的长度
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function RightJustifyPadZero(lValue: LongInt; nLen: Integer): string;
var
  t: Integer;
  ts: string;
begin
  SetLength(ts, nLen);
  t := nLen;
  while t > 0 do
  begin
    ts[t] := Chr((lValue mod 10) + Ord('0'));
    t := t - 1;
    lValue := lValue div 10;
  end;
  Result := Copy(ts, 1, nLen);
end;

//=======================================================================
// 名称:    FillSpaces
// 说明:	把字符串扩展到指定长度,尾部补空格
// 参数:	str:String
//				被扩展的字符串
//			nLen: Integer
//				扩展后的字符串的长度
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function FillSpaces(const str: string; const nLen: Integer): string;
var
  i: Integer;
begin
  Result := str;
  i := Length(Result);
  while i < nLen do
  begin
    Result := Result + ' ';
    i := Length(Result);
  end;
end;

// 填充制定长度,指定的字符
function FillChar(const vStr,vChar:string;const nLen: Integer;const vType:string): string;
var
  i:Integer;
begin
  Result:=vStr;
  i:=Length(Result);
  while i<nLen do
  begin
    if vType='L' then
      Result:=vChar+Result
    else
      Result:=Result+vChar;
    i:=Length(Result);
  end;
end;

//=======================================================================
// 名称:    CapFirst
// 说明:	把字符串中每个单词的第一个字母大写,其余字母小写。
// 参数:	str:String
//				被处理的字符串
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function CapFirst(str: string): string;
var
  i: Integer;
  s: string;
begin
  s := UpperCase(str[1]);
  for i := 2 to Length(str) do
    if (ord(str[i - 1]) < 33) then // 前一个字符是单词分隔字符
      s := s + UpperCase(str[i])
    else
      s := s + LowerCase(str[i]);
  Result := s;
end;

//=======================================================================
// 名称:    Replace
// 说明:	把字符串中的一个子串用另外一个字符串代替。
// 参数:	str:String
//				被处理的字符串
//			s1:String
//				被替换的字符串
//			s2:String
//				替换字符串
//			blCaseSensitive:Boolean
//				字符串比较是否区分大小写
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function Replace(str, s1, s2: string; blCaseSensitive: Boolean): string;
var
  i: Integer;
  s, t: string;
begin
  s := '';
  t := str;
  repeat
    if blCaseSensitive then
      i := Pos(s1, t)
    else
      i := Pos(LowerCase(s1), LowerCase(t));
    if i > 0 then
    begin
      s := s + Copy(t, 1, i - 1) + s2;
      t := Copy(t, i + Length(s1), MaxInt);
    end
    else
      s := s + t;
  until i <= 0;
  Result := s;
end;

//=======================================================================
// 名称:    CopyFromChar
// 说明:	把字符串中从第一个指定字符开始的指定个数的字符拷贝出来。
// 参数:	str:String
//				被处理的字符串
//			c:Char
//				指定的开始字符
//			l:Integer
//				要拷贝的子串的长度
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function CopyFromChar(s: string; c: Char; l: Integer): string;
var
  i: Integer;
begin
  i := Pos(c, s);
  Result := Copy(s, i, l);
end;

//=======================================================================
// 名称:    DivideIntString
// 说明:	把一个整数字符串用分隔符隔开
// 参数:	str:String
//				被处理的字符串
//			c:Char
//				指定的分隔符
//			l:Integer
//				每段长度
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function DivideIntString(s: string; c: Char; l: Integer): string;
var
  nStrLen, i, j: Integer;
begin
  Result := s;
  if l <= 0 then
    Exit;

  nStrLen := Length(s);
  i := nStrLen mod l;
  if i > 0 then
    j := l
  else
    j := 0;

  Result := Copy(s, 1, i);
  Inc(i);

  while (i <= nStrLen) do
  begin
    if (j = l) then
    begin
      Result := Result + c;
      j := 0;
    end;
    Result := Result + s[i];
    Inc(i);
    Inc(j);
  end;
end;

//=======================================================================
// 名称:    EncryptStr
// 说明:	加密一个字符串
// 参数:	s:String
//				被加密的字符串
//			Key:Word
//				密钥
// 返回:	String
//				加密后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function EncryptStr(const S: string; Key: Word): string;
const
  C1 = 52845;
  C2 = 22719;
var
  i: Integer;
  t: LongWord;
begin
  SetLength(Result, Length(S));
  for i := 1 to Length(S) do
  begin
    Result[i] := Char(Byte(S[i]) xor (Key shr 8));
    t := Byte(Result[i]) + Key;
        //t:=t*C1+C2;
    Key := Word(t);
  end;
end;

//=======================================================================
// 名称:    DecryptStr
// 说明:	解密一个字符串
// 参数:	s:String
//				被解密的字符串
//			Key:Word
//				密钥
// 返回:	String
//				解密后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function DecryptStr(const S: string; Key: Word): string;
const
  C1 = 52845;
  C2 = 22719;
var
  i: Byte;
  t: LongWord;
begin
  SetLength(Result, Length(S));
  for i := 1 to Length(S) do
  begin
    Result[i] := Char(Byte(S[i]) xor (Key shr 8));
    t := Byte(s[i]) + Key;
        //t:=t*C1+C2;
    Key := Word(t);
  end;
end;

//=======================================================================
// 名称:    FillChars
// 说明:	把字符串扩展到指定长度,尾部补指定字符
// 参数:	str:String
//				被扩展的字符串
//			nLen: Integer
//				扩展后的字符串的长度
//			cTail: Char
//				用于填充的字符
// 返回:	String
//				处理后得到的字符串
// 编程: 	张新民,2008.12.11
//=======================================================================
function FillChars(const str: string; const nLen: Integer;
  const cTail: Char): string;
var
  i: Integer;
begin
  Result := str;
  i := Length(Result);
  while i < nLen do
  begin
    Result := Result + cTail;
    i := Length(Result);
  end;
end;

//================================================================//
//                           CutSpace                             //
//   除去指定字符串中包含的空格。                                 //
//   例如:CutSpace('  a bc d    ')='abcd'.                        //
//   张新民,2008.12.11                                           //
//================================================================//
function CutSpace(str: string): string;
var i, len: Integer;
  mids1, mids2: string;
begin
  mids1 := trim(str);
  mids2 := '';
  len := Length(mids1);
  for i := 1 to len do begin
    if mids1[i] <> ' ' then mids2 := mids2 + mids1[i];
  end;
  result := mids2;
end;

//================================================================//
//                           IntToStrZero                         //
//把整数转化为指定长度的字符串。位数不足,前面补零。              //
//例如:IntToStrZero(16,4)='0016'.                                 //
//张新民,2008.12.11                                              //
//================================================================// 
function IntToStrZero(const AInt: Integer; const nLen: Integer): string;
var mids: string;
begin
  mids := IntToStr(AInt);
  while Length(mids) < nLen do mids := '0' + mids;
  result := mids;
end;

//12位编码转化成13位编码
function Bm12To13(const vCode:string):string;
var
  i,ljSum,loSum,lYs:Integer;
begin
  for i:=1 to 12 do
  begin
    if (i mod 2)=1 then
      ljSum:=ljSum+strtoint(copy(vCode,i,1))
    else
      loSum:=loSum+strtoint(copy(vCode,i,1));
  end;
  lYs:=(10 - ljSum+3*loSum mod 10) mod 10;
  Result:=vCode+inttostr(lYs);
end;

end.

⌨️ 快捷键说明

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