Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.08.2009, 14:47
navigator navigator вне форума
Прохожий
 
Регистрация: 08.04.2009
Сообщения: 6
Репутация: 10
Вопрос Преобразование одной строки в другую

Здравствуйте!

Прошу помощи! Есть файл со строками, вида:
"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  
Старый 04.08.2009, 19:37
Аватар для pesi
pesi pesi вне форума
Активный
 
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
По умолчанию

Код:
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  
Старый 05.08.2009, 10:08
navigator navigator вне форума
Прохожий
 
Регистрация: 08.04.2009
Сообщения: 6
Репутация: 10
По умолчанию

Спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:06.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter