|
#1
|
|||
|
|||
Поиск текста.
Извиняюсь если такое уже обсуждалось, просто даже не знаю какой запрос в поиск писать Оо
Вобщем вопрос такой.... Есть Memo с кучей строк вроде "DropItem(II_GEN_FOO_ICE_ORANGEJUIICE, 600000001, 0, 1);" Надо как-то записать в 3 переменных три значения между запятыми (на примере это "600000001", "0" и "1") и передать их в функцию. Размер числа может быть разным, они могут быть от однозначных до 12-тизначных. |
#2
|
|||
|
|||
Если все строки такого вида, то дели по запятым.
Код:
var V1, V2, V3 : String; InString : String; begin InString := 'DropItem(II_GEN_FOO_ICE_ORANGEJUIICE, 600000001, 0, 1);'; InString := Copy(InString,Pos(',',InString)+1,Length(InString)); V1 := Trim(Copy(InString,1,Pos(',',InString)-1)); InString := Copy(InString,Pos(',',InString)+1,Length(InString)); V1 := Trim(Copy(InString,1,Pos(',',InString)-1)); InString := Copy(InString,Pos(',',InString)+1,Length(InString)); V3 := Trim(Copy(InString,1,Pos(')',InString)-1); Если строки разные, то тогда уже проще сделать небольшой парсер, который и будет их разбирать. |
#3
|
|||
|
|||
Спасибо за ответ, всё получилось. И ещё один вопрос не по теме.
Как можно удалить из ListBox все элементы, которые не встречаются в Memo? Например удалить элемент "Вася" если в Memo не встречается строка "Вася". Последний раз редактировалось wh1ga, 18.05.2010 в 23:02. |
#4
|
|||
|
|||
только проверкой руками. Готового метода нет.
Код:
For I := ListBox1.Items.Count-1 DownTo 0 Do If Pos(ListBox1.Items[i],Memo1.Lines.Text) = 0 Then ListBox1.Items.Delete(I); Это очень грубо. В иделале, надо весь текст из Memo разбить на слова и потом уже искать по этому списку. Вышеприведенный код НЕ удалит слово 'Вася' если оно в мемо выглядит как 'Васятка'. И удалит, если оно в мемо написано как 'вася'. Второй случай фиксится путем оборачивания обеих строк в условии if в AnsiUpperCase. |
#5
|
|||
|
|||
Ещё раз большое спасибо.
|