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

📄 strprocess.pas

📁 为青岛一家公司做的条码打印管理
💻 PAS
📖 第 1 页 / 共 3 页
字号:
{
   例程作者:李龙武。版权归洪涛软件所有   1999-12-1
   例程说明:
}
unit StrProcess;

interface

uses
  Classes,SysUtils,Graphics,dialogs;
const
  TooLong=' is too long!';
  EmptyStr=' is an empty string value!';
  EmptyHex=' is an empty Hex value!';
  EmptyBinary=' is an empty binary value!';
  InvalidHex=' is invalid Hex value!';
  InvalidSize=' is a invalid value with the binary size.';
  InvalidBinary=' is invalid binary value!';
  LoopReplace1='The string replaced and the string replacing with are the SAME!';
  LoopReplace2='Case Sensitive is FALSE.'+LoopReplace1;
type
  EStrToCharError=class(exception);
  EHexToIntError=class(exception);
  EIntToBinError=class(exception);
  EBinToIntError=class(exception);
  EReplaceError=class(exception);
  TStrException=class of exception;

{ 数制转换}
function HexToInt(Hex:String):integer;  //将一个十六进制的值转换成整型
function IntToBin(Int: LongInt;Size: Integer): String; //将一个十进制整型转换成二进制值
function BinToInt(Bin: string): LongInt; //将一个十进制整型转换成二进制值
function BinToHex(Bin:string;Size:integer):string; //将二进制转换成十六进制
function HexToBin(Hex:string;Size:integer):string; //将十六进制转换成二进制

{字符处理}
//字符的种类
function IsNumber(Ch: char):boolean;  //判断一个字符是否是一个数字
function IsLetter(Ch:char):boolean;   //判断一个字符是否是一个字母
function IsSign(Ch:char):boolean;//判断一个字符是否是一些符号' ','\' '>'等。
function IsPrint(Ch:char):boolean;//判断一个字符是否是可显示出来的字符
{字符串处理}

//串转换/转化
function StrToChar(Str:string):char;  //将单个字符的串转换成字符
function IntToStrPad0(Digital,Size:integer;Before:boolean):string;//将一个整型数转换成一个在前/后添加若干个0的串
//字符数目
function GetMaxWordNumber(var MaxLineID:integer;List:TStringList):integer; //获取最大行的行号及字母数。
function GetChineseWordNumber(Str:string):integer; //获取一个串中汉字的个数
function GetEnglishWordNumber(Str:string):integer; //获取一个串中英文字母个数

//字符输出空间
function GetTextOutWidth(Canvas:TCanvas;Str:String;WordSpace:integer):integer;//获取一个串输出时的宽度(Pixel)
function GetTextOutHeight(Canvas:TCanvas;List:TStringList;LineSpace:integer):integer;//获取StringList输出时的高度。

//串的排列顺序
function Reversed(Str:string):string; //倒排字符串

//子串在串中的位置
function ReversedPos(SubStr,Str:string):integer; //查找最右边的SubStr在Str中的位置。与Pos相反。
function LeftLastPos(Str:string;FindChar:Char):integer;//查找某一个字符在串左边的最后的位置
function RightBeforePos(Str:string;FindChar:char):integer;//查早某一字符在右边最前的位置
function LastPos(Str:string;FindChar:char):integer;overload;//查找某一字符在串中最后的位置。返回0表示没有这样的字符
function LastPos(Str:string;FindStr:string):integer;overload;//查找某一字符在串中最后的位置。返回0表示没有这样的字符
function AnyPos(Str,FindStr:string;CaseSensitive:boolean):integer;//可以按是否区分大小写来查找第一个FindStr的位置,其余功能同Pos
function AnyLastPos(Str,FindStr:string;CaseSensitive:boolean):integer;//可以按是否区分大小写来查找最后一个FindStr的位置,其余功能同LastPos
procedure GetSubInfoInStr(Str,SubStr:string;CaseSensitive:boolean;var InfoList:TStringList);//获取一个串中所有子串在串中的位置

//字符串的替换

//字符串的替换--用RepStr代替SignChar位置前、后、之间的的串
function ReplaceLeft(Str,RepStr:string;SignChar:char):string;//RepStr替换SignChar前面的所有字符 。如果没有找到相应的字符就返回原串
function ReplaceMiddle(Str,RepStr:string;SignChar:char):string; //用RepStr替换第一个和最后一个SignChar 之间的所有字符
function ReplaceRight(Str,RepStr:string;SignChar:char):string;//用RepStr替换SignChar后面的所有字符.如果没有找到相应的字符就返回原串
function ReplaceBoth(Str,RepStr:string;SignChar:char):string;//用RepStr替换左边第一个前面和右边第一个后面的所有串
//字符串的替换--用SpecifiedChar代替SignChar位置前、后、之间的SignChar
function ReplaceLeftChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar之间的所有SignChar字符
function ReplaceMiddleChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar开始 到 从右边开始到第一个不是SignChar之间的所有SignChar
function ReplaceRightChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从最右边到第一个不是SignChar之间的所有SignChar字符
function ReplaceBothChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar之间以及从最右边到第一个不是SignChar之间的所有SignChar字符
function ReplaceAllChar(Str:string;RepChar,SignChar:char):string;//用RepChar代替串中所有的SignChar
//字符串的替换--用RepStr代替SignStr
function ReplaceFirstStr(Str,RepStr,SignStr:string;CaseSensitive:boolean):string;//用RepStr替换第一个SignStr
function ReplaceLastStr(Str,RepStr,SignStr:string;CaseSensitive:boolean):string;//用RepStr替换最后一个SignStr
function ReplaceBothStr(Str,RepStr,SignStr:string;CaseSensitive:boolean):string;//用RepStr替换最前面和最后面一个SignStr
function ReplaceAllStr(Str,RepStr,SignStr:string;CaseSensitive:boolean;var RepCount:integer):string;//用RepStr替换所有的SignStr
//字符串的删除
function TrimLeftChar(Str:string;DelChar:char):string;//删除Str中左边的指定字符
function TrimRightChar(Str:string;DelChar:char):string; //删除Str中右边的指定字符
function TrimBoth(Str:string;DelChar:char):string;//删除Str中左右边的指定字符
function TrimAll(Str:String;DelChar:char):string;//删除Str中所有的指定字符
function TrimMiddle(Str:string;DelChar:char):string;//删除中间的指定字符(从左边和右边第一个不是指定字符之间)

//获取字符串的子串
//字符串获取-获取某一字符的左、右、中间的字符串
function GetLeftStr(Str:string;SpecifiedChar:char):string;//获取字符串某一特定字符(第一个)左边的所有字符(不含该特定字符)
function GetMiddleStr(Str:string;SpecifiedChar:Char):string;//获取字符串某一特定字符(第一个和最后一个)之间的所有字符(不含该特定字符)
function GetRightStr(Str:string;SpecifiedChar:char):string;//获取字符串某一特定字符(第一个)右边的所有字符(不含该特定字符)
//字符串获取-获取某一字符串(该字符串由相同的字符组成)中间的字符串
function GetMiddleString(Str:string;SpecifiedChar:Char):string;
//字符串获取-获取两个字符串相同的部分
function GetLeftSameStr(Str1,Str2:string):string; //获取两字符串左边相同的部分
function GetRightSameStr(Str1,Str2:string):string; //获取两字符串右边相同的部分
//字符串获取-获取两个字符串不同的部分
procedure GetRightDiverse(var Str1,Str2:string); //获取两个字符串相同部分的右边不同部分
procedure GetLeftDiverse(var Str1,Str2:string); //获取两个字符串相同部分左边不同部分
//字符串的比较
function FindDiverseLeftPos(Str1,Str2:string):integer;//从左至右查找在字符串中不同的位置。空格忽略
function FindDiverseRightPos(Str1,Str2:string):integer;//从右至左查找在字符串中不同的位置。 空格忽略

//字符串的插入
function RepeatChar(ReChar:char;Count:integer):string; //将某一字符重复Count次;
implementation

procedure EStrProcess(ExceptType:TStrException;Value,ErrorInfo:string);
begin
  raise ExceptType.Create(Value+ErrorInfo);;
end;

////////////////////////////////////////////////////////////////////////////////
{
  数制转换
}
function HexToInt(Hex:String):integer; //将一个十六进制的值转换成整型 参数说明:Hex:被转换的十六进制值
var
  HexDigital:Set of char;
  i:integer;
  Digital:string;
begin
 HexDigital:=['1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F','a','b','c','d','e','f'];
 if Length(Hex)=0 then EStrProcess(EHexToIntError,Hex,EmptyHex);
 for i:=1 to Length(Hex) do begin
   Digital:=Copy(Hex,i,1);
   if (i=1)and(digital='$')then Continue;
   if not(StrToChar(Digital) in HexDigital) then EStrProcess(EHexToIntError,Hex,InvalidHex);
 end;
 Digital:=Copy(Hex,1,1);
 if Digital<>'$' then Hex:='$'+Hex;
 Result:=StrToInt(Hex);
end;

function IntToBin(Int:LongInt;Size:Integer):String; //将一个十进制整型转换成二进制值 参数说明:Int:被转换的整型值  Size:转换后的宽度:4位 8位 或更大
var
  i:Integer;
begin
  if Size<1 then EStrProcess(EIntToBinError,IntToStr(Size),InvalidSize);
  for i:=Size downto 1 do begin
    if Int and (1 shl (Size-i))<>0 then Result:='1'+Result
    else Result:='0'+Result;
  end;
end;

function BinToInt(Bin: string): LongInt;//将一个十进制整型转换成二进制值  参数说明:Bin:被转换的二进制值串
var
  i,Size: Integer;
  Bit:string;
begin
  Result:=0;
  Size:=Length(Bin);
  if Size=0 then EStrProcess(EBinToIntError,Bin,EmptyBinary);
  for i:=Size downto 1 do begin
    Bit:= Copy(Bin,i,1);
    if (Bit<>'1') and (Bit<>'0') then EStrProcess(EBinToIntError,Bin,InvalidBinary);
    if Bit='1'  then Result:=Result+(1 shl (Size-i));
  end;
end;

function BinToHex(Bin:string;Size:integer):string; //将二进制转换成十六进制  Bin:被转换的二进制值  Size:转换成十六进制的宽度
begin
  Result:=IntToHex(BinToInt(Bin),Size);
end;

function HexToBin(Hex:string;Size:integer):string;  //将十六进制转换成二进制 Bin:被转换的十六进制值  Size:转换成二进制的宽度
begin
  Result:=IntToBin(HexToInt(Hex),Size);
end;
/////////////////////////////////////////////////////////////////////////////////
{

  字符处理

}
//字符种类
function IsNumber(Ch: char): boolean;  //判断一个字符是否是一个数字
begin
  Result:=((Ch>='0')and(Ch<='9'));
end;

function IsLetter(Ch:char):boolean;   //判断一个字符是否是一个字母
begin
  Result:=((Ch>='a')and(Ch<='z'))or((Ch>='A')and(Ch<='Z'));
end;
function IsSign(Ch:char):boolean;//判断一个字符是否是一些符号' ','\' '>'等。
type
  TSign=set of Char;
var
  Sign:TSign;
begin
  Sign:=[' ','~','`','!','@','#','$','%','^','&','*','(',')','-','_','=','+','|','\','[',']','{','}',':',';','''','"','<','>',',','.','?','/'];
  Result:=Ch in Sign;
end;
function IsPrint(Ch:char):boolean;//判断一个字符是否是可显示出来的字符
begin
  Result:=IsLetter(Ch) or IsNumber(Ch) or IsSign(Ch);
end;
//////////////////////////////////////////////////////////////////////////////////
{
  字符串处理
}

//串转换/转化
function StrToChar(Str:string):Char; //将单个字符的串转换成字符 参数说明:Str:被转换的串
begin
  if Length(Str)=0 then EStrProcess(EStrToCharError,Str,EmptyStr);
  if Length(Str)>1 then EStrProcess(EStrToCharError,Str,Toolong);
  Result:=Str[1];
end;

function IntToStrPad0(Digital,Size:integer;Before:boolean):string;//将一个整型数转换成一个在前/后添加若干个0的串
var
  Len:integer;
begin
  Result:=IntToStr(Digital);
  Len:=Length(Result);
  while Len<Size do begin
    if Before then Result:='0'+Result
    else Result:=Result+'0';
    Len:=Length(Result);
  end;
end;

//字符数目
function GetMaxWordNumber(var MaxLineID:integer;List:TStringList):integer; //获取最大行的行号及字母数。
var
  i:integer;
  Len:integer;
begin
  Result:=0;
  if List.Count=0 then Exit;
  for i:=0 to List.Count-1 do begin
    Len:=Length(List.strings[i]);
    if Len>=Result then begin
      Result:=Len;
      MaxLineID:=i;
    end;
  end;
end;

function GetChineseWordNumber(Str:string):integer;  //获取一个串的汉字的个数
var
  i:integer;
  CurrentChar:char;
  CurrentStr:string;
begin
  Result:=0;
  if Length(Str)=0 then Exit;
  for i:=1 to Length(Str) do begin
     CurrentStr:=Copy(Str,i,1);
     CurrentChar:=CurrentStr[1];
     if Ord(CurrentChar)>=127 then Result:=Result+1;
  end;
  Result:=Result div 2;
end;

function GetEnglishWordNumber(Str:string):integer; //获取英文字母的个数
begin
  Result:=Length(Str)-2*GetChineseWordNumber(Str);
end;

//字符输出空间 (图形模式)
function GetTextOutWidth(Canvas:TCanvas;Str:String;WordSpace:integer):integer; //获取一个串输出时的宽度(Pixel)
var
  i:integer;
  CurrentStr:string;
  CurrentChar:Char;
begin
  i:=1;
  Result:=0;
  if Length(Str)=0 then Exit;
  while i<=Length(Str) do begin
    CurrentStr:=Copy(Str,i,1);
    CurrentChar:=CurrentStr[1];
    if Ord(CurrentChar)>=127 then begin
      CurrentStr:=Copy(Str,i,2);
      inc(i);

⌨️ 快捷键说明

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