Delphi-Help

Главная Статьи Текст и Строки Деление строки не несколько строк

Деление строки не несколько строк

Оцените материал
(0 голосов)


Деление строки не несколько строк

Делит строку аStr на три строки St1,St2,St3 длиной Long1,Long2,Long3 соответственно или меньше в зависимости от длины исходной строки.

procedure DivPart(aStr: string; var St1, St2,
 St3: string; Long1, Long2, Long3:byte);
var
  i, pos, Long: byte;
begin
  St1 := '';
  St2 := '';
  St3 := '';
  aStr := Trim(aStr);
  Long := Length(aStr);
  if Long <= Long1 then
  begin
    St1 := aStr;
    Exit
  end;
  Pos := Long1;
  for i := 1 to Long1 + 1 do
    if aStr[i] = ' ' then
      Pos := i;
  St1 := TrimRight(Copy(aStr, 1, Pos));
  Delete(aStr, 1, Pos);
  aStr := TrimLeft(aStr);
  Long := Length(aStr);
  if Long <= Long2 then
  begin
    St2 := aStr;
    Exit
  end;
  Pos := Long2;
  for i := 1 to Long2 + 1 do
    if aStr[i] = ' ' then
      Pos := i;
  St2 := TrimRight(Copy(aStr, 1, Pos));
  St3 := Trim(Copy(aStr, Pos + 1, Long3))
end;

 

Ещё вариант:

Разбивка строки на подстроки с использованием заданного разделителя.

Параметры: Str: WideString - Строка для разбивки.

Delimiter: String - Разделитель подстрок с строке Str.

Результат: TStringList: Список найденных подстрок.

function Tokenize(Str: WideString; Delimiter: string): TStringList;
var
  tmpStrList: TStringList;
  tmpString, tmpVal: WideString;
  DelimPos: LongInt;
begin
  tmpStrList := TStringList.Create;
  TmpString := Str;
  DelimPos := 1;
  while DelimPos > 0 do
  begin
    DelimPos := LastDelimiter(Delimiter, TmpString);
    tmpVal := Copy(TmpString, DelimPos + 1, Length(TmpString));
    if tmpVal <> '' then
      tmpStrList.Add(UpperCase(tmpVal));
    Delete(TmpString, DelimPos, Length(TmpString));
  end;
  Tokenize := tmpStrList;
end;
Пример использования: 
 
function TForm1.GetDirNames(FullPath: string): TStringList;
begin
  GetDirNames := Tokenize(FullPath, '\');
end;
Прочитано 8431 раз

Авторизация



Счетчики