|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
[ Исходник ] - функция для перевода строки чисел вида "1,2,3,5,7" в вид...
Автор: Слаин Артур
Описание: Если нужно кому, функция для перевода строки чисел вида "1,2,3,5,7" в вид "1-3,5,7" (как при указании листов для принтера). Написал для курсовой - в расписании занятий нужно было сокращать список недель Код:
function TForm1.NumSeparator(inp: String): String; var o, a, c, p, r: String; begin o := ''; p := '-1'; r := ''; a := inp; while a <> '' do begin if Copy(a, 0, 1) = ',' then a := Copy(a, 1); if Pos(',', a) > 0 then begin c := Copy(a, 0, Pos(',', a) - 1); a := Copy(a, Pos(',', a) + 1) end else begin c := a; a := ''; end; if p = '-1' then o := o + c else if StrToInt(p) + 1 <> StrToInt(c) then begin if r <> '' then begin o := o + '-' + r; r := ''; end; o := o + ',' + c; end else r := c; p := c; end; if r <> '' then o := o + '-' + r; Result := o; end; Последний раз редактировалось Admin, 10.02.2013 в 15:29. |
#2
|
||||
|
||||
жуть оформлено.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
OTVET (12.02.2013)
|
#3
|
||||
|
||||
:)
Код:
// стандарт строки 1,2,3,5,7 function NumParser2(numstr: string; rz: char = ','):string; var s: TStringList; i: integer; ok : boolean; begin s := TStringList.Create; ExtractStrings([rz],[' '],PChar(numstr),s); result:=''; // преобразование ok := false; for i:=s.Count-2 downto 1 do if ((s[i-1] = '-') or (strtoint(s[i-1])+1 = strtoint(s[i]))) and ((s[i+1] = '-') or (strtoint(s[i+1])-1 = strtoint(s[i]))) then begin s[i] := '-'; if ok then s.Delete(i); ok:=true; end else ok:=false; // end for s.Delimiter:=rz; result:=StringReplace(s.DelimitedText,rz+'-'+rz,'-',[rfReplaceAll]); s.free; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(NumParser2('1,2,3,5,7')); ShowMessage(NumParser2('1,2,3,5,7,10,11,12,13')); ShowMessage(NumParser2('1,2,3,4,5,7,13,70,71,72,73,80')); end; |