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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.12.2010, 20:24
Hamsi Hamsi вне форума
Прохожий
 
Регистрация: 02.12.2010
Сообщения: 22
Репутация: 10
Сообщение Поиск в цикле

Припустим у меня есть мемо и так такие строчки
Цитата:
<blogspot><jjjjj>read=0
<abcd><sda>read=1
<saddas><saa>read=0
<sdaccx><asw>read=0
Нужно вывести все поля с read=0 куда-нибудь
Ответить с цитированием
  #2  
Старый 02.12.2010, 20:48
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Код:
var s: string;
begin
...
s:='';
for i:=0 to memo1.Lines.Count-1 do
  if(pos('read=0', memo1.Lines.Strings[i]) > 0) then
    for k:=i+1 to Memo1.Lines.Count-1 do
      s:=s+Memo1.Lines.Strings[k];

ShowMessage(s);
Как-то так. Наверно можно проще, но что первое в голову пришло.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #3  
Старый 02.12.2010, 20:54
Hamsi Hamsi вне форума
Прохожий
 
Регистрация: 02.12.2010
Сообщения: 22
Репутация: 10
По умолчанию

Выводит все мемо только немного местами поменяно
Ответить с цитированием
  #4  
Старый 02.12.2010, 20:55
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

А не заметил, там может быть несколько "read=0". Сейчас исправлю.

Пожалуйста:
Код:
var s: string;
b: boolean;
i, k: Integer;
begin
b:=false;
s:='';
for i:=0 to memo1.Lines.Count-1 do
  if(pos('read=0', memo1.Lines.Strings[i]) > 0) and(not(b)) then begin
    b:=true;
    for k:=i+1 to Memo1.Lines.Count-1 do
      s:=s+Memo1.Lines.Strings[k]+ #13;
  end;
  s:=trim(s);

ShowMessage(s);

Разве что можно убрать "+#13", тогда все что после "read=0" выведется в одну строку...
__________________
Помогаю за Спасибо

Последний раз редактировалось v1s2222, 02.12.2010 в 20:58.
Ответить с цитированием
  #5  
Старый 02.12.2010, 21:08
Hamsi Hamsi вне форума
Прохожий
 
Регистрация: 02.12.2010
Сообщения: 22
Репутация: 10
По умолчанию

Теперь выводятса 3 поля но один их них содержит read=1!
Ответить с цитированием
  #6  
Старый 02.12.2010, 21:09
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Секунду, вопроса не понял. Сейчас переделаю
Скорее всего ты это хотел:
Код:
var s: string;
i: Integer;
begin
s:='';
for i:=0 to memo1.Lines.Count-1 do
  if(pos('read=0', memo1.Lines.Strings[i]) > 0) then begin
    s:=s+Memo1.Lines.Strings[i]+ #13;
  end;
  s:=trim(s);

ShowMessage(s);
А если хотел чтоб "read=0" не выводилось, то:
Код:
var s: string;
i: Integer;
begin
s:='';
for i:=0 to memo1.Lines.Count-1 do
  if(pos('read=0', memo1.Lines.Strings[i]) > 0) then begin
    s:=s+Copy(Memo1.Lines.Strings[i], 1, (length(Memo1.Lines.Strings[i]) - length('read=0')))+ #13;
  end;
  s:=trim(s);

ShowMessage(s);
__________________
Помогаю за Спасибо

Последний раз редактировалось v1s2222, 02.12.2010 в 21:15.
Ответить с цитированием
  #7  
Старый 02.12.2010, 21:22
Hamsi Hamsi вне форума
Прохожий
 
Регистрация: 02.12.2010
Сообщения: 22
Репутация: 10
По умолчанию

Если взять другой код то выводит просто
read="0" >
read="0" >
read="0" >

Последний раз редактировалось Hamsi, 02.12.2010 в 21:43.
Ответить с цитированием
  #8  
Старый 02.12.2010, 22:01
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Измени не много код вместо "...pos('read=0'..." на "...pos('read="0"'...".
__________________
Помогаю за Спасибо
Ответить с цитированием
  #9  
Старый 02.12.2010, 22:21
Hamsi Hamsi вне форума
Прохожий
 
Регистрация: 02.12.2010
Сообщения: 22
Репутация: 10
По умолчанию

Да я не нуб,так менял,ничего не выводит
В то время если ему дать исходный код такой как в браузер(не слитый) то все норм
Ответить с цитированием
  #10  
Старый 02.12.2010, 22:26
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Я собственно вопроса тогда не понял. То что ты просил работает. Просто скорее всего у тебя другой текст. Покажи весь текст...
__________________
Помогаю за Спасибо
Ответить с цитированием
  #11  
Старый 02.12.2010, 22:36
Hamsi Hamsi вне форума
Прохожий
 
Регистрация: 02.12.2010
Сообщения: 22
Репутация: 10
По умолчанию

Кусок исходного кода из мемо
Цитата:
</th>квадрат</tr>квадратквадрат<tr id="mess1584" read="1" >
Твой код
Цитата:
s:='';
for i:=0 to memo1.Lines.Count-1 do
if(pos('<tr class='+CHR(39)+'newRow'+CHR(39)+'id=', memo1.Lines.Strings[i]) > 0) then begin
s:=s+Memo1.Lines.Strings[i]+#13;
end;
s:=trim(s);

ShowMessage(s);
Выводит пустое окно,но если в мемо самостоятельно вставить из браузер строку то все норм!Из за того что слито очень наверника не хочет
Квадрат я имею в виду настроящий квадрат(перенос на новую строку)

Последний раз редактировалось Hamsi, 02.12.2010 в 22:40.
Ответить с цитированием
  #12  
Старый 02.12.2010, 22:43
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Тебе ж надо вывести все строки, в которых есть слово "read="0"", тогда просто пиши так:
Код:
s:='';
for i:=0 to memo1.Lines.Count-1 do
if(pos('read="0"', memo1.Lines.Strings[i]) > 0) then begin
s:=s+Memo1.Lines.Strings[i]+#13;
end;
s:=trim(s);

ShowMessage(s);
__________________
Помогаю за Спасибо
Ответить с цитированием
  #13  
Старый 02.12.2010, 22:51
Hamsi Hamsi вне форума
Прохожий
 
Регистрация: 02.12.2010
Сообщения: 22
Репутация: 10
По умолчанию

Цитата:
Сообщение от v1s2222
Тебе ж надо вывести все строки, в которых есть слово "read="0"", тогда просто пиши так:
Код:
s:='';
for i:=0 to memo1.Lines.Count-1 do
if(pos('read="0"', memo1.Lines.Strings[i]) > 0) then begin
s:=s+Memo1.Lines.Strings[i]+#13;
end;
s:=trim(s);

ShowMessage(s);
Выводит
read="0"
read="0"
read="0"
Говорю же что все разделено только квадратами тоисть там одна строка как на самом деле 4 наверника
Ответить с цитированием
  #14  
Старый 02.12.2010, 22:53
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Цитата:
Сообщение от Hamsi
Говорю же что все разделено только квадратами тоисть там одна строка как на самом деле 4 наверника

Постарайся писать без ошибок, и разъясняй понятнее то, что тебе надо. А то я так и не понял что тебе надо.
__________________
Помогаю за Спасибо
Ответить с цитированием
  #15  
Старый 02.12.2010, 23:00
Hamsi Hamsi вне форума
Прохожий
 
Регистрация: 02.12.2010
Сообщения: 22
Репутация: 10
По умолчанию

Я не из России так что извини
Хорошо мне надо вывести 1575<tr class='newRow' id="mess1575" read="0" >
в которых именно read=0!цифры везде разные!
Но если у тебя нет времены то пусть выводит <tr class='newRow' id="mess1575" read="0" > но где read=0
Твой код не работает так как код в мемо слитый
тоисть
<tr class='newRow' id="mess1575" read="0" >
<td class="msg_check" onmouseover="checkOver(this, '1575')" onmouseout="checkOut(this, '1575')" onclick="checkChange(this, '1575')"><div></div><input type="hidden" id="post_check_1575" name="post[1575]" /></td>
<td class="messagePicture">
<a href="/sumsar">

<img src="http://cs461.vkontakte.ru/u12541807/e_9fd0d771.jpg" alt=""/>
</a>
</td>
<td class="messageFrom">
<div class="name">
в мемо это все одна строка разделенная квадратиками

Последний раз редактировалось Hamsi, 02.12.2010 в 23:04.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter