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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2010, 09:24   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Функции GetBefore и GetAfter

Нашел эти две функции. В принципе довольно таки они удобные, но, есть вопросы как применить их. Они хорошо справляются, если символ встречается один раз. А если 2 раза? Например как тут 207_1000_2164551.pdf? Как тогда? Символ "_" встречается два раза. А я хотел разбивать подобные записи на три колонки в StringGrid-e c помощью этих функций. На такой вид:
207 1000 2164551.pdf
Причем значения должны браться из первой колонки стринггрида, а значения все разные и нужно для каждого значения выполнить свою разбивку. Вот такая нетривиальная задача.

Ссылка на описание функций: http://www.kansoftware.ru/?tid=5072
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 21.07.2010, 10:09   #2
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

спросонья накялакал
Код:
var
  poststr,stroka,delim: string;
begin
  stroka := '207_1000_2164551.pdf';
  delim := '_';
  while Length(stroka)>0 do
  begin
    if pos(delim,stroka)>0 then
    begin
      poststr:=Trim(copy(stroka,0,pos(delim,stroka)-1));//копируем до -
      stroka := Trim(copy(stroka,Length(poststr)+2,Length(stroka)));//удаляем до -
    end
    else
    begin
      poststr:=Trim(stroka);//больше нет -
      stroka := '';//чистим
    end;
    ShowMessage(Trim(poststr));//постим в сам стринггрид, для наглядности вывожу Message
  end;
end;
©Учиться, учиться и еще раз учиться!

Последний раз редактировалось quit; 21.07.2010 в 10:25. Причина: Trim(length) не покатит :)
quit вне форума Ответить с цитированием
Старый 21.07.2010, 10:14   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

PosEx подойдет?
Либо же
Код:
st.Text:=StringReplace('207_1000_2164551.pdf','_',#13#10,[rfreplaceall]);
Где st - TStringList
Цитата:
спросонья накялакал
Шож так сложно то? ?)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.07.2010, 10:20   #4
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Цитата:
Шож так сложно то? ?)
Пардон, что на уме было то и написал))) вроде не так сложно))
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 21.07.2010, 11:01   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

я например тоже люблю использовать StringList;
Код:
procedure TForm1.Button1Click(Sender: TObject);
var sl:tstringlist;
begin
 sl:=tstringlist.Create;
 sl.Delimiter:='_';
 sl.DelimitedText:='207_1000_2164551.pdf';
 form1.StringGrid1.Cells[1,1]:=sl[0];
 form1.StringGrid1.Cells[2,1]:=sl[1];
 form1.StringGrid1.Cells[3,1]:=sl[2];
 sl.Free;
end;

Последний раз редактировалось SERG1980; 21.07.2010 в 11:14.
SERG1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции в С Ol'ga Общие вопросы C/C++ 5 01.06.2010 01:01
Функции в си. Вывод двумерного массива из функции. Evgen51 Общие вопросы C/C++ 9 13.05.2010 03:59
Функции Syltan Общие вопросы C/C++ 9 28.08.2009 18:36
Чем отличается описание функции от определения функции в С++? Go6a Помощь студентам 4 18.07.2009 18:07
Функции. Передача массива в качестве параметра функции. Wia Помощь студентам 2 17.03.2009 14:57