works:programmer:delphi:delphi-explode

Функция Explode для Делфи...

Когда-то очень давно в 2008м году на форуме Чертёнка выложил свою версию функции explode, написанную на Delphi.

uses
    StrUtils;
 
    type
     TStringDynArray = array of string;
 
     function Explode(sString, sExploader: string; out sOutArray: TStringDynArray; out iArraySize: integer): boolean;
     var
      iStrLen       : Word;
      iExplLen      : Word;
      sSubStr       : String;
      iX            : Word;
      iPos          : Word;
     begin
      Result := False;
      // Считаем количество элементов Exploader в String
      iStrLen       := Length(sString);
      iExplLen      := Length(sExploader);
      iArraySize    := 1;
      if ( iStrLen > iExplLen) then 
      begin
       iPos := 0;
       while ( true ) do
       begin
        iPos := PosEx(sExploader, sString, iPos + 1);
        if (iPos <> 0) then
        begin
         iArraySize := iArraySize + 1;
         iPos := iPos + iExplLen - 1;
        end
        else
         break;
       end;
      end;
      // Разбераем строку
      SetLength(sOutArray, iArraySize);
      if (iArraySize <> 1) then
      begin
       for iX := 0 to iArraySize - 1 do
       begin
        iPos := Pos(sExploader, sString);
        if (iPos <> 0) then
        begin
         sOutArray[iX] := Copy(sString, 1, iPos - 1);
         sString := Copy(sString, iPos + iExplLen, Length(sString) - iPos - iExplLen + 1);
        end
        else
         sOutArray[iX] := sString;
       end;
       Result := True;
      end
       else sOutArray[0] := sString;
     end;

ps: Спасибо DrPass за содействие в написании, он указал на один немаловажный баг с повторителем строки.

works/programmer/delphi/delphi-explode.txt · Last modified: 2020/09/01 05:29 by Chugreev Eugene