Delphi World - Функция для разворачивания строк
Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Функция для разворачивания строк

Автор: DiVo
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Функция для "разворачивания" строк

Входные параметры:
Input - входная строка, которую необходимо представить в "развернутом виде"

Зависимости: стандартный набор включаемых модулей
Автор:       Ru, DiVo_Ru@rambler.ru, Одесса
Copyright:   DiVo 2002, creator Ru
Дата:        12 ноября 2002 г.
***************************************************** }

function DecStr(Input: string): string;
var
  i, j, t: integer;
  s: string;
begin
  if pos('-', Input) <> 0 then
  begin
    while length(Input) <> 0 do
    begin
      if Input[1] = ',' then
      begin
        i := strtoint(s);
        delete(Input, 1, 1);
        result := result + s + ',';
        s := '';
      end
      else
      begin
        if Input[1] = '-' then
        begin
          i := strtoint(s);
          delete(Input, 1, 1);
          t := pos(',', Input);
          result := result + s + ',';
          s := '';
          if t = 0 then
          begin
            j := strtoint(Input);
            Input := '';
          end
          else
          begin
            j := strtoint(copy(Input, 1, t - 1));
            delete(Input, 1, t);
          end;
          inc(i);
          while i < j + 1 do
          begin
            result := result + inttostr(i) + ',';
            inc(i);
          end;
        end
        else
        begin
          s := s + Input[1];
          delete(Input, 1, 1);
        end;
      end;
    end;
  end
  else
    result := Input;
  if s <> '' then
    result := result + s;
end;
на входе: 1,3,5-10,15
на выходе: 1,3,5,6,7,8,9,10,15 
Проект Delphi World © Выпуск 2002 - 2017
Автор проекта: Эксклюзивные курсы программирования