Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2009, 20:51   #11
pautina
Пользователь
 
Регистрация: 23.01.2009
Сообщений: 32
По умолчанию

posex выдаёт позицию одной строки в другой, т.е. нам надо знать позицию 2-го разделителя в строке ( например 7, 10, 23,)
[CODE]
if posex('i',s)=7 // это позиция 2-го разделителя
then (записываем оставшуюся часть строки)
[CODE]
Как это описать?
pautina вне форума Ответить с цитированием
Старый 25.01.2009, 21:04   #12
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

POSEX выдает позицию подстроки, это верно.
Одним из из параметров этой функции является позиция начального отсчета. Следовательно, начиная с 1, в цикле мы можем пробежаться по всей длине строки и подсчитать количество наших подстрок (у нас это один символ). А потом (вряд ли целесообразно заносить всю эту муру в некий массив) перейти к нужной ветви процедуры (4 или 5 вхождений было?), опять-таки при помощи POSEX аналогично найти нужный (по номеру) разделитель и "выцарапать" данные.
Или я что-то не понял?
Каждую строку придется обрабатывать индивидуально - никуда не денешься... Даже в том случае, если б они у вас были одинаковыми по структуре - количество символов, предваряющих те, которые нас интересуют, все равно непостоянно, увы.

Последний раз редактировалось mihali4; 25.01.2009 в 21:07.
mihali4 вне форума Ответить с цитированием
Старый 26.01.2009, 08:54   #13
pautina
Пользователь
 
Регистрация: 23.01.2009
Сообщений: 32
По умолчанию

Огромное Вам всем спасибо за помощь, получилось всё вывести
Использовал такой код
Код:
procedure TForm1.Button1Click(Sender: TObject);

var SourceST,DestST:TStringList;
    i:integer;
    s:string;
begin
 SourceST:=TStringList.Create;
 DestST:=TStringList.Create;
 if form1.OpenDialog1.Execute then SourceST.LoadFromFile(form1.OpenDialog1.FileName);
 for i:=0 to SourceST.Count-1 do
 begin

 // try     // Вывод чисел
 //   if pos('|',SourceST[i])<>0 then // Если строка с разделителем | найдена
 //   SourceST[i]:=Copy(SourceST[i],Length(SourceST[i])-47,48)
 //   else SourceST[i]:=Copy(SourceST[i],Length(SourceST[i])-47,1); // Если строка с разделителем не найдена то строка состоит из пробела
 //   DestST.Add(SourceST[i]);   // Вывод чисел

 // except
 // end;

  try
    // Вывод временных меток
    if pos(':',SourceST[i])<>0 then // Если строка с : найдена
    SourceST[i]:=Copy(SourceST[i],Length(SourceST[i])-19,20)
    else
    // Вывод чисел
     if ((pos('|',SourceST[i])<>0) and ((pos('1',SourceST[i])<>0)
         or (pos('2',SourceST[i])<>0) or (pos('3',SourceST[i])<>0)
         or (pos('4',SourceST[i])<>0) or (pos('5',SourceST[i])<>0)
         or (pos('6',SourceST[i])<>0) or (pos('7',SourceST[i])<>0)
         or (pos('8',SourceST[i])<>0) or (pos('9',SourceST[i])<>0)
         or (pos('0',SourceST[i])<>0)))

     then // Если строка с разделителем | найдена и в строке есть цыфры
     SourceST[i]:=Copy(SourceST[i],Length(SourceST[i])-47,48)
    // Если ни временных меток ни чисел нет то строка пустая
    else SourceST[i]:='';
    DestST.Add(SourceST[i]);
  except
  end;

 end;
 DestST.SaveToFile('112.txt'); //   DestST.SaveToFile('112.xls');
 SourceST.Free;
 DestST.Free;
end;
Временные метки и цыфры выводятся.

Последний раз редактировалось pautina; 26.01.2009 в 12:37.
pautina вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод информации о компьютере и операционной системы (Turbo С 3.0, Borland C++) sniket Общие вопросы C/C++ 0 09.12.2008 21:37
вывод на экран информации о маршрутах, начинающихся или кончающихся в пункте Sergeo_89 Паскаль, Turbo Pascal, PascalABC.NET 4 07.12.2008 21:00
Вывод информации в Memo из файла. Фибер Оптик Общие вопросы Delphi 11 04.05.2007 00:13