Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Функция для разворачивания строк

01.01.2007
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Функция для "разворачивания" строк
 
 
Входные параметры:
Input - входная строка, которую необходимо представить в "развернутом виде"
 
на входе: 1,3,5-10,15
на выходе: 1,3,5,6,7,8,9,10,15
 
 
Зависимости: стандартный набор включаемых модулей
Автор:       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;