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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2017, 10:35   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Найти первым один из двух разделителей

Есть TStringList, есть два вида разделителя: --->--- и ---<---
Как узнать какой из двух разделителей в TStringList идёт первым?
Код:
I := SL.IndexOf('----->-----') or SL.IndexOf('-----<-----');
При таком раскладе
-----<-----
----->-----
Получаю позицию 1, ходя должно 0

Последний раз редактировалось Shouldercannon; 06.01.2017 в 10:42.
Shouldercannon вне форума Ответить с цитированием
Старый 06.01.2017, 10:43   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

or зачем там? Нашел индексы одного и второго, сравнил который меньше. С учетом того, что разделитель не обязательно найден
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.01.2017, 11:41   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
  // Поиск сепаратора
  Ind1 := SL.IndexOf('----->-----');
  Ind2 := SL.IndexOf('-----<-----');
  if Ind1 < Ind2 then I := Ind1 else I := Ind2; // Установим позицию для парсинга
  if I = -1 then I := 0; // В STringList нет позиции -1
Частенько бывает 0 и выводится всё содержимое с нулевой позиции, а не с указанной позиции.
Попробую исправить
Shouldercannon вне форума Ответить с цитированием
Старый 06.01.2017, 12:14   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
С учетом того, что разделитель не обязательно найден
Код:
  Ind1 := SL.IndexOf('----->-----');
  Ind2 := SL.IndexOf('-----<-----');
  if (Ind1>=0) and (Ind1>=0) then begin
    if Ind1 < Ind2 then I := Ind1 else I := Ind2; 
  end
  else if Ind1>=0 then i:=Ind1
  else if Ind2>=0 then i:=Ind2
  else i:=0;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

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


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти сумму элементов массива,расположенных между первым и вторым отрицательными элементами Кристюша5 Паскаль, Turbo Pascal, PascalABC.NET 0 26.05.2012 16:06
Найти сумму элементов между первым и вторым отрицательным элементами. Что у меня неправильно? GreenMan Паскаль, Turbo Pascal, PascalABC.NET 2 26.02.2012 13:59
Найти сумму элементов последовательности между первым и последним нулем. alonix Помощь студентам 6 16.01.2012 04:48
найти пересечение двух прямоугольников заданных координатами двух углов Этотак Помощь студентам 0 11.05.2011 23:55
найти сумму элементов массива расположных между первым и последним положительным Julila Помощь студентам 9 06.01.2011 02:32