Top.Mail.Ru
Ответы

Взять фрагмент из строки delphi

Есть строка:
Товар * Цена | Категория

Задача: выцепить "цену".
Половину сделал:
inc(result, strtoint(copy(ListBox2.items[i], Pos('* ', ListBox2.items[i]) + 1, Length(ListBox2.Items[i]))));
Как в этой части кода ещё убрать " | Категория", чтобы осталась только цена?

По дате
По Рейтингу
Аватар пользователя
1мес

что за мания писать все в одну строку? :)

123
 index := Pos('* ', ListBox1.items[i]) + 1;
count := Pos(' |', ListBox1.items[i]) - 1 - index; {pos-2-(index+1)}
inc(result, strtoint(copy(ListBox1.items[i], index, count))); 

если хочешь в одну строку, то

1
 inc(result, ListBox1.items[i].Split(['*','|'])[1].Trim.ToInteger); 

это будет работать в Delphi XE3+

Аватар пользователя
Гений
1мес

А что мешает повторить процедуру, но искать позицию | ?
Можно еще проще сделать

1234
 S := 'Товар * Цена | Категория';
P1 := Pos('*', S); 
P2 := Pos('|', S); 
S1 := Trim(Copy(S, P1+1, P2-P1-1)); 

Все. В S1 строка "Цена"