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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 01.04.2014, 12:01
saylar_06 saylar_06 вне форума
Прохожий
 
Регистрация: 08.06.2012
Сообщения: 33
Репутация: 10
По умолчанию Парсинг текста

Товарищи! Помогите кодом (очень нужно) есть строка(которая постоянно меняется):

asduay123123:asjasdf342523:234234234:009034953sdf: 234234234

как мне вытаскивать постоянно третье и четвертое слово?

3: 234234234
4: 009034953sdf

P.S Заранее благодарен!

....

Просидел почти два часа, пришел к этому...

Код:
procedure TForm1.sButton1Click(Sender: TObject);
var
  i, o : Integer;
begin

  for i := 1 to Length (sMemo1.Text) do
    if sMemo1.Text[i] = ':' then
      for o := i + 1 to Length (sMemo1.Text) do
        if sMemo1.Text[o] = ':' then
          begin
           Memo1.Lines.Add( Copy(sMemo1.Text, i + 1, o) );
           break;
          end;
end;

но все равно не работает

Последний раз редактировалось saylar_06, 01.04.2014 в 14:11.
Ответить с цитированием
  #2  
Старый 01.04.2014, 14:44
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от saylar_06
Товарищи! Помогите кодом (очень нужно) есть строка(которая постоянно меняется):

asduay123123:asjasdf342523:234234234:009034953sdf: 234234234

как мне вытаскивать постоянно третье и четвертое слово?

3: 234234234
4: 009034953sdf
Примерно так:
Код:
function NextWord(const Str: String; var Pos: Integer): Integer;
begin
  Result := Pos;
  Pos := PosEx(':', Str, Pos);
  if Pos = 0 then Pos := Length(Str) + 1;
  Inc(Pos);
  Result := Pos - Result;
end;

function GetWord(const Str: String; var Pos: Integer): String;
var
  Pos0: Integer;
begin
  Pos0 := Pos;
  Result := Copy(Str, Pos0, NextWord(Str, Pos) - 1);
end;


// Пример использования:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: String;
  p: Integer;
begin
  s := 'asduay123123:asjasdf342523:234234234:009034953sdf: 234234234';

  p := 1; // Начинаем поиск слов с первого символа строки
  NextWord(s, p); // Пропускаем первое слово
  NextWord(s, p); // Пропускаем второе слово
  Memo1.Lines.Add(GetWord(s, p)); // Получаем третье слово
  Memo1.Lines.Add(GetWord(s, p)); // Получаем четвёртое слово
end;
Цитата:
Сообщение от saylar_06
Просидел почти два часа, пришел к этому...
.....
но все равно не работает
Ну самому интереснее и полезнее решать чем подсматривать уже готовое
Ответить с цитированием
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение:
saylar_06 (01.04.2014)
  #3  
Старый 01.04.2014, 14:48
saylar_06 saylar_06 вне форума
Прохожий
 
Регистрация: 08.06.2012
Сообщения: 33
Репутация: 10
По умолчанию

ты чертовски прав, по этому мы и учимся!

В общем решил задачу сам, но все равно спасибо тебе за помощь!

Код:
procedure TForm1.sButton1Click(Sender: TObject);
var
  i, a : Integer;
begin

  for i := 1 to Length (sMemo1.Text) do
    begin
      if sMemo1.Text[i] = ':' then
        begin
          for a := i + 1 to Length (sMemo1.Text) do
            begin
              if sMemo1.Text[a] = ':' then
                begin
                  Memo1.Lines.Add( Copy( sMemo1.Text, i + 1, a - i - 1 ) );
                  break;
                end;
            end;
        end;
    end;

end;
Ответить с цитированием
  #4  
Старый 01.04.2014, 15:30
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

На bencoding словарь походит.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter