|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Преобразование одной строки в другую
Здравствуйте!
Прошу помощи! Есть файл со строками, вида: "proc;prov;clientid;summ;date;term;numchek 45678;10;79891234567;78952.56;2009-01-15;TERMID;00456 45678;10;79789876541;5;2009-01-15;PROG;00486 45678;10;79324562813;45.5;2009-01-15;TERMID;00859 45678;10;79015682543;800.03;2009-01-15;PROG;00231 ......" Необходимо получить 10;78952.56;45678;79891234567;TERMID;20090115;456 10;5;45678;79789876541;PROG;20090115;486 10;45.5;45678;79324562813;TERMID;20090115;859 10;800.03;45678;79015682543;PROG;20090115;231 ......" При преобразовании, первая строка в исходном файле удаляется сразу и она больше не нужна. Если строки одинаковой длинны и сепараторы стоят все в одном месте, то проблем бы небыло. Но в результате того что поле summ и term постоянно разные (по длинне), то обычным способом здесь не прокатывает, пытался. Не могу прицепится к данным (сепаратару), поскольку неизвестно где они будут. Чувствую решение где-то рядом, но дойти до него не получается. У кого-какие мысли. Спасибо. |
#2
|
||||
|
||||
Код:
procedure TForm1.Button1Click(Sender: TObject); var s, god, st : string; str : TStringList; i : integer; begin memo2.Clear; str := TStringList.create; for i:=1 to memo1.Lines.Count-1 do begin s:=memo1.Lines.Strings[i]; // в memo1 загружены строки str.text := stringReplace(s, ';', #13#10, [rfReplaceAll]); st:=str[6]; if st[1] = '0' then if st[2] ='0' then if st[3] = '0' then if st[4] = '0' then delete(st, 1, 4) else delete(st, 1, 3) else delete(st, 1, 2) else delete(st, 1, 1); god:=str[1] + ';' + str[3] +';' + str[0] + ';' + str[2] + ';' + str[5] + ';' + StringReplace(str[4], '-', '', [rfReplaceAll]) + ';' + st + ';' ; memo2.Lines.Add(god); //в memo2 зугружаем готовые строки end; str.free end; |
#3
|
|||
|
|||
Спасибо!
|