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

📄 strprocess.pas

📁 为青岛一家公司做的条码打印管理
💻 PAS
📖 第 1 页 / 共 3 页
字号:
    end;
    Result:=Result+Canvas.TextWidth(CurrentStr)+WordSpace;
    inc(i);
  end;
end;

function GetTextOutHeight(Canvas:TCanvas;List:TStringList;LineSpace:integer):integer;  //获取StringList输出时的高度。
var
  i:integer;
begin
  Result:=0;
  if List.Count=0 then Exit;
  for i:=0 to List.Count-1 do begin
    if i<>List.Count-1 then Result:=Result+Canvas.TextHeight(List.Strings[i])+LineSpace
    else Result:=Result+Canvas.TextHeight(List.Strings[i]);
  end;
end;

//串的排列顺序
function Reversed(Str:string):string; //倒排字符串
var
  Len:integer;
  RevStr,temp:string;
  i:integer;
begin
  Result:=Str;
  Len:=Length(Str);
  if len=0 then Exit;
  if Len=1 then Exit;
  SetLength(RevStr,Len);
  for i:= Len-1 downto 0 do begin
    temp:=Str[Len-i];
    RevStr[i+1]:=Str[Len-i];
  end;
  Result:=RevStr;
end;

//子串在串中的位置
function ReversedPos(SubStr,Str:string):integer; //查找最右边的SubStr在Str中的位置。与Pos相反。
var
  Len:integer;
  Position:integer;
begin
  Len:=Length(Str);
  Str:=Reversed(Str);
  SubStr:=Reversed(SubStr);
  Position:=Pos(SubStr,Str);
  if Position<>0 then Result:=Len-Position+1-(Length(SubStr)-1)
  else Result:=0;
end;

function LeftLastPos(Str:string;FindChar:Char):integer;//查找某一个字符在串左边的最后的位置 返回0表示没有这样的字符
var
  Len,i:integer;
begin
  Len:=Length(Str);
  Result:=0;
  for i:=1 to Len do begin
    if Str[i]=FindChar then begin
       if i=Len then Result:=Len;
       continue;
    end else begin
      Result:=i-1;
      Break;
    end;
  end;
end;

function RightBeforePos(Str:string;FindChar:char):integer;//查早某一字符在右边最前的位置  返回0表示没有这样的字符
var
  RevStr:string;
  RevPos,Len:integer;
begin
   Len:=Length(Str);
   RevStr:=Reversed(Str);
   RevPos:=LeftLastPos(RevStr,FindChar);
   if Str<>'' then  begin
     if Str[Len]<>FindChar then Result:=0
     else  Result:=Length(Str)-RevPos+1;
   end else Result:=0;
end;

function LastPos(Str:string;FindChar:char):integer;//查找某一字符在串中最后的位置。返回0表示没有这样的字符
begin
  Result:=ReversedPos(FindChar,Str);
end;

function LastPos(Str:string;FindStr:string):integer;//查找某一字符在串中最后的位置。返回0表示没有这样的字符
begin
  Result:=ReversedPos(FindStr,Str);
end;

function AnyPos(Str,FindStr:string;CaseSensitive:boolean):integer;//可以按是否区分大小写来查找,其余功能同Pos
begin
  if CaseSensitive then Result:=Pos(FindStr,Str)
  else begin
    Str:=AnsiUpperCase(Str);
    FindStr:=AnsiUpperCase(FindStr);
    Result:=Pos(FindStr,Str);
  end;
end;

function AnyLastPos(Str,FindStr:string;CaseSensitive:boolean):integer;//可以按是否区分大小写来查找最后一个FindStr的位置,其余功能同LastPos
begin
  if CaseSensitive then Result:=LastPos(Str,FindStr)
  else begin
    Str:=AnsiUpperCase(Str);
    FindStr:=AnsiUpperCase(FindStr);
    Result:=LastPos(Str,FindStr);
  end;
end;
procedure GetSubInfoInStr(Str,SubStr:string;CaseSensitive:boolean;var InfoList:TStringList);//获取一个串中所有子串在串中的位置
var                                                                                         //InfoList返回的一些数字是SubStr在
  RelativePos,AbsolutePos:integer;                                                           //Str中的位置。
  CutLen,Len,SubLen:integer;
begin
  InfoList.Clear;
  SubLen:=Length(SubStr);
  CutLen:=0;
  repeat
    Len:=Length(Str);
    RelativePos:=AnyPos(Str,SubStr,CaseSensitive);
    if RelativePos=0 then begin
      if CutLen=0 then InfoList:=nil ;
      Continue;
    end;
    Str:=Copy(Str,RelativePos+SubLen,Len-RelativePos-SubLen+1);
    AbsolutePos:=CutLen+RelativePos;
    InfoList.Add(IntToStr(AbsolutePos));
    CutLen:=CutLen+RelativePos+SubLen-1;
  until ((Len<SubLen) or (RelativePos=0));
end;
//字符串的替换

//字符串的替换--用String代替SignChar位置前、后、之间的的串
function ReplaceLeft(Str,RepStr:string;SignChar:char):string;//RepStr替换左边第一个SignChar前面的所有字符 。如果没有找到相应的字符就返回原串
var
  SignStr:string;
  Position,Len:integer;
begin
  SignStr:='1';
  SignStr[1]:=SignChar;
  Result:=Str;
  Len:=Length(Str);
  Position:=Pos(SignStr,Str);
  if Position<>0 then begin //如果没有找到相应的字符就返回原串
    Str:=Copy(Str,Position,Len-Position+1);
    Result:=RepStr+Str;
  end;
end;

function ReplaceMiddle(Str,RepStr:string;SignChar:char):string; //用RepStr替换第一个和最后一个SignChar 之间的所有字符
var
  LeftStr,MidStr,RightStr:string;
begin
  LeftStr:=GetLeftStr(Str,SignChar);
  RightStr:=GetRightStr(Str,SignChar);
  MidStr:=GetMiddleStr(Str,SignChar);
  if MidStr='' then begin
                          //当串中只有两个SignChar并且紧挨在一起
       Result:=Str;       //当串中没有SignChar字符时,
                          //当串中只有一个SignChar字符时,
                          //返回原串
  end else begin
    MidStr:=RepStr;
    Result:=LeftStr+SignChar+MidStr+SignChar+RightStr;
  end;
end;

function ReplaceRight(Str,RepStr:string;SignChar:char):string;//用RepStr替换右边第一个SignChar后面的所有字符 。如果没有找到相应的字符就返回原串
var
  Count:integer;
  SignStr:string;
begin
  SignStr:='1';
  SignStr[1]:=SignChar;
  Result:=Str;
  Count:=ReversedPos(SignStr,Str);
  if Count<>0 then begin   //如果没有找到相应的字符就返回原串
    Str:=Copy(Str,1,Count);
    Result:=Str+RepStr;
  end;
end;

function ReplaceBoth(Str,RepStr:string;SignChar:char):string;//用RepStr替换左边第一个SignChar前面和右边第一个SignChar后面的所有串
begin
  Result:=ReplaceLeft(Str,RepStr,SignChar);
  Result:=ReplaceRight(Result,RepStr,SignChar);
end;


//字符串的替换--用SpecifiedChar代替SignChar位置前、后、之间的SignChar
function ReplaceLeftChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar之间的所有SignChar字符
var
  LeftPos,i:integer;
begin
  LeftPos:=LeftLastPos(Str,SignChar);
  for i:=1 to LeftPos do Str[i]:=RepChar;
  Result:=Str;
end;

function ReplaceMiddleChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar开始 到 从右边开始到第一个不是SignChar之间的所有SignChar
var
  LeftStr,RightStr,MidStr:string;
  LeftPos,RightPos,Len:integer;
begin
  Len:=Length(Str);
  LeftPos:=LeftLastPos(Str,SignChar);
  RightPos:=RightBeforePos(Str,SignChar);
  LeftStr:=Copy(Str,1,LeftPos);
  if RightPos=0 then RightStr:=''
  else RightStr:=Copy(Str,RightPos,Len);
  MidStr:=GetMiddleString(Str,SignChar);
  if MidStr='' then Result:=Str
  else begin
    MidStr:=ReplaceAllChar(MidStr,RepChar,SignChar);
    Result:=LeftStr+MidStr+RightStr;
  end;
end;

function ReplaceRightChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从最右边到第一个不是SignChar之间的所有SignChar字符
var
  RightPos,i:integer;
begin
  RightPos:=RightBeforePos(Str,Signchar);
  if RightPos=0 then begin
    Result:=Str;
  end else begin
    for i:=RightPos to Length(Str) do begin
      Str[i]:=RepChar;
    end;
    Result:=Str;
  end;
end;

function ReplaceBothChar(Str:string;RepChar,SignChar:char):string;//用RepChar替换从左边到第一个不是SignChar之间以及从最右边到第一个不是SignChar之间的所有SignChar字符
begin
  Result:=ReplaceLeftChar(Str,RepChar,SignChar);
  Result:=ReplaceRightChar(Result,RepChar,SignChar);
end;

function ReplaceAllChar(Str:string;RepChar,SignChar:char):string;//用RepChar代替串中所有的SignChar
var
  i:integer;
begin
  for i:=1 to Length(Str) do begin
    if Str[i]=SignChar then Str[i]:=RepChar;
  end;
  Result:=Str;
end;

//字符串的替换--用RepStr代替SignStr
function ReplaceFirstStr(Str,RepStr,SignStr:string;CaseSensitive:boolean):string;//用RepStr替换第一个SignStr
var
  FirstPos,Len,RepLen:integer;
  LeftStr,RightStr:string;
begin
  LeftStr:='';
  RightStr:='';
  RepLen:=Length(SignStr);
  Len:=Length(Str);
  FirstPos:=AnyPos(Str,SignStr,CaseSensitive);
  if FirstPos=0 then Result:=Str
  else begin
    LeftStr:=Copy(Str,1,FirstPos-1);
    RightStr:=Copy(Str,FirstPos+RepLen,Len-FirstPos-RepLen+1);
    Result:=LeftStr+RepStr+RightStr;
  end;
end;
function ReplaceLastStr(Str,RepStr,SignStr:string;CaseSensitive:boolean):string;//用RepStr替换最后一个SignStr
var
  LastPos1,Len,RepLen:integer;
  LeftStr,RightStr:string;
begin
  LeftStr:='';
  RightStr:='';
  RepLen:=Length(SignStr);
  Len:=Length(Str);
  LastPos1:=AnyLastPos(Str,SignStr,CaseSensitive);
  if LastPos1=0 then Result:=Str
  else begin
    LeftStr:=Copy(Str,1,LastPos1-1);
    RightStr:=Copy(Str,LastPos1+RepLen,Len-LastPos1-RepLen+1);
    Result:=LeftStr+RepStr+RightStr;
  end;

⌨️ 快捷键说明

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