Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Помогите


Автор: Dron_kss 19.3.2008, 03:12
Здраствуйте вот столкнулся с проблемой я с помощу idhttp получаю html странилу там есть вот такой вот отрывок который загружается в memo.
Код

 <tr>
    <td>Категория:</td>
    <td><select class="rating" name="catlist[]" id="category" onchange="onCategoryChange(this.value)" style="width: 220px; height: 73px;" multiple="multiple"><option value="0"></option><option style="" value="9">Новости</option><option style="" value="10">Программы</option><option style="" value="2">Игры</option><option style="" value="11">E-Book</option><option style="" value="3">Фильмы</option><option style="" value="6">Скрипты</option><option style="" value="4">Музыка</option><option style="" value="8">Шаблоны</option><option style="" value="7">Графика</option><option style="" value="14">Обучение</option><option style="" value="12">Для Мобил</option><option style="" value="15">Приколы</option></select></td>

  </tr>

выглядит это так:
user posted image
Вопрос: как мне обработав странилу найти значение "value" если я буду знать категорию к примеру "Программы".
ЗЫ: место расположение этого select class может менятся.
Зарание благодарен smile 

Автор: Rohoss 19.3.2008, 06:25
Код

function SearchSC(m:TStrings;sc:string):string;
var
I:Integer;
begin
  for I := 0 to m.Count - 1 do
    begin
      if pos(sc,m.Strings[I])>0 then Result:=m.Strings[I];
    end;
end;

function SearchValue(SSC,ns:string):string;
var
psc,t1,t2:Integer;//
begin
psc:=pos(ns,SSC);
 repeat
   psc:=psc-1;
 until (Copy(SSC,psc,1)='"'); t2:=psc;

 repeat
   psc:=psc-1;
 until (Copy(SSC,psc,1)='"'); t1:=psc;
Result:=Copy(SSC,t1+1,t2-t1-1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
SSC:string;
begin
SSC:=SearchSC(Memo1.Lines,'select class');
ShowMessage(SearchValue(SSC,'Программы'));
end;

Автор: VICTAR 19.3.2008, 07:37
Советую использовать регулярные выражения (RegExpr)

Автор: Dron_kss 19.3.2008, 16:09
Помогите просто прога глючит и всё smile  вот её содержимое может я не так понял что ты мне дал 
Код

function SearchSC(m:TStrings;sc:string):string;
var
I:Integer;
begin
  for I := 0 to m.Count - 1 do
    begin
      if pos(sc,m.Strings[I])>0 then Result:=m.Strings[I];
    end;
end;

function SearchValue(SSC,ns:string):string;
var
psc,t1,t2:Integer;//
begin
psc:=pos(ns,SSC);
 repeat
   psc:=psc-1;
 until (Copy(SSC,psc,1)='"'); t2:=psc;

 repeat
   psc:=psc-1;
 until (Copy(SSC,psc,1)='"'); t1:=psc;
Result:=Copy(SSC,t1+1,t2-t1-1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var ss:tstringlist;  s,SSC:string;
begin
ss:=tstringlist.create;
ss.add('login_name='+Edit1.Text);
ss.add('login_password='+Edit2.Text);
ss.add('login=submit');
IdHTTP1.Post('http://dolce-files.ru/?do=addnews',ss);
s:=IdHTTP1.Get('http://dolce-files.ru/?do=addnews');
Memo3.Text:=s;
SSC:=SearchSC(Memo3.Lines,'select class');
ShowMessage(SearchValue(SSC,'Программы'));
ss:=tstringlist.create;
ss.add('login_name='+Edit1.Text);
ss.add('login_password='+Edit2.Text);
ss.add('login=submit');
ss.add('catlist[]='+SSC);
ss.add('title='+Edit3.Text);
ss.add('short_story='+memo2.Text);
ss.add('full_story='+memo1.Text);
ss.add('mod=addnews');
IdHTTP1.Post('http://dolce-files.ru/?do=addnews',ss);

end;

Автор: Rohoss 19.3.2008, 21:07
Цитата(Dron_kss @  19.3.2008,  16:09 Найти цитируемый пост)
ShowMessage(SearchValue(SSC,'Программы'));
 эта функция возвращает значение value, я поставил ShowMessage чтобы показать тебе её значение

Автор: Dron_kss 19.3.2008, 23:07
Чёта не работает и я не могу понять какой именно значение оно возращает из всех value где там прописуется какую категорию ищем????

Автор: Rohoss 19.3.2008, 23:23
Ты же просил категорию «Программы»… Постав место неё другую переменную и задавай значение, которое хочешь… Лучше почитай больше литературы о Делфи, а потом начинай программировать, иначе эффекта будет мало… по себе знаю  smile 

Автор: Dron_kss 20.3.2008, 01:29
Цитата(Rohoss @ 19.3.2008,  23:23)
Ты же просил категорию «Программы»… Постав место неё другую переменную и задавай значение, которое хочешь… Лучше почитай больше литературы о Делфи, а потом начинай программировать, иначе эффекта будет мало… по себе знаю  smile

Я писал "к примеру программы" smile  а дай если можеш где про эту обработку текста можно почитать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)