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

📄 splitfns.pas

📁 delphi的源代码:查找通信设备的mac地址
💻 PAS
字号:
unit SplitFns;

interface

uses
  Classes;

function GetNextToken(const S: string; Separator: Char; var StartPos: Integer): string;

{Returns the next token (substring) from string S, starting at index StartPos
 and ending 1 character before the next occurrence of Separator (or at the end
 of S, whichever comes first).}

{StartPos returns the starting position for the next token, 1 more than the
 position in S of the end of this token}

procedure Split(const S: string; Separator: Char; MyStringList: TStringList);

{Splits a string containing designated separators into tokens and adds
 them to MyStringList NOTE: MyStringList must be Created before being passed
 to this procedure and Freed after use}

function AddToken(const aToken, S: string; Separator: Char; StringLimit: Integer): string;

{Used to join 2 strings with a separator character between them and can be used
 in a Join function}

{The StringLimit parameter prevents the length of the Result String from
 exceeding a preset maximum}

implementation

uses
  SysUtils;

function GetNextToken
   (Const S: string;
   Separator: char;
   var StartPos: integer): String;
var Index: integer;
begin
   Result := '';

{Step over repeated separators}
   While (S[StartPos] = Separator)
   and (StartPos <= length(S))do
    StartPos := StartPos + 1;

   if StartPos > length(S) then Exit;

{Set Index to StartPos}
   Index := StartPos;

{Find the next Separator}
   While (S[Index] <> Separator)
   and (Index <= length(S))do
    Index := Index + 1;

{Copy the token to the Result}
   Result := Copy(S, StartPos, Index - StartPos) ;

{SetStartPos to next Character after the Separator}
   StartPos := Index + 1;
end;

procedure Split(const S: String; Separator: Char; MyStringList: TStringList);
var
  Start: Integer;
begin
   Start := 1;
   while Start <= Length(S) do
     MyStringList.Add(GetNextToken(S, Separator, Start));
end;

function AddToken (const aToken, S: String;
                    Separator: Char;
                    StringLimit: integer): String;
begin
   if Length(aToken) + Length(S) < StringLimit then
     begin
       {Add a separator unless the
        Result string is empty}
       if S = '' then
         Result := ''
       else Result := S + Separator;

       {Add the token}
       Result := Result + aToken;
     end
   else
   {if the StringLimit would be
   exceeded, raise an exception}
     Raise Exception.Create('Cannot add token') ;
end;

end.

⌨️ 快捷键说明

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