📄 usysfunc.pas
字号:
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 + -