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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2013, 01:35   #1
Xo66um
Форумчанин
 
Регистрация: 11.05.2013
Сообщений: 154
По умолчанию Прочитать значения из строки через разделитель

Доброго всем времени суток.

Собственно, есть строка, в которой записаны значения через разделитель.
К примеру: "32;4;100;150;88;..." и т.п.

Можно как-нибудь выдрать из этой строки все значения?

Пробовал сам, вот кусок кода
Код:
for i := 0 to 8 do
 val[i] := copy(string, 1, pos(';', string)-1);
Получается выдрать только первое значение (до первого разделителя), дальше - бардак, т.к. значения могут быть N-значные, отсюда и проблема.
Xo66um вне форума Ответить с цитированием
Старый 23.08.2013, 01:42   #2
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Я вот таким пользуюсь. Есть где-то и другой, более компактный. Но суть одна, искать по своим исходникам не хочу

Код:
 {Преобразование строки с разделителями в StringList
  Tmp := TStringList.Create();
  StrBreakApart('Text1|Text2|Text3|Text4', '|', Tmp);
 }
procedure StrBreakApart(const S, Delimeter: string; Parts: TStrings);
var
  CurPos: integer;
  CurStr: string;
begin
  Parts.clear;
  Parts.BeginUpdate();
  try
    CurStr := S;
    repeat
      CurPos := Pos(Delimeter, CurStr);
      if (CurPos > 0) then
      begin
        Parts.Add(Copy(CurStr, 1, Pred(CurPos)));
        CurStr := Copy(CurStr, CurPos + Length(Delimeter),
          Length(CurStr) - CurPos - Length(Delimeter) + 1);
      end
      else
        Parts.Add(CurStr);
    until CurPos = 0;
  finally
    Parts.EndUpdate();
  end;
end;
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 23.08.2013, 01:48   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

grominfo, забавно Зачем такие сложности?
Код:
var
 ts:TStringList;
 i:Integer;
begin
 ts:=TStringList.Create;
 ts.Delimeter:=';';
 ts.DelimetedText:='32;4;100;150;88;...';
 for i:=0 fo ts.Count -1 do
 //Что-то делаем с разделенными данными

...
ts.Free;
end;
Человек_Борща вне форума Ответить с цитированием
Старый 23.08.2013, 01:52   #4
grominfo
Форумчанин
 
Аватар для grominfo
 
Регистрация: 30.05.2011
Сообщений: 651
По умолчанию

Цитата:
Зачем такие сложности?
Я не помню, но зачем-то мне нужен был этот способ, так как я тогда хранил логи в текстовых файлах.

У меня ещё был где-то другой способ, более компактный, использующий функцию из sysutils, я потом им начал пользоваться. Кажется из-за того, чтобы не передавать функции Tstrings
Создание, программирование и сопровождение сайтов любой сложности.
Изготовление программ на заказ.
Список услуг и портфолио на сайте www.andreygrom.ru
grominfo вне форума Ответить с цитированием
Старый 23.08.2013, 01:55   #5
Xo66um
Форумчанин
 
Регистрация: 11.05.2013
Сообщений: 154
По умолчанию

Извините за придирчивость.
Быстро работает, я опасался обратного. Спасибо Вам большое, grominfo и Человек_Борща

Последний раз редактировалось Xo66um; 23.08.2013 в 02:05.
Xo66um вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение и запись с файла через разделитель Leks123 PHP 9 11.08.2013 16:35
Перенос значений из ListBox в Memo через разделитель artemavd Общие вопросы Delphi 4 23.12.2011 17:00
Как через веб браузер прочитать html код troyan32 Общие вопросы Delphi 5 05.03.2011 17:32
Вывести из массива через разделитель sergeyrulit PHP 2 05.01.2011 15:56
Как прочитать значения выборки из Wave файла? maxandmin Общие вопросы C/C++ 1 22.07.2010 00:56