Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

по поводу получения Http контента [D7, WinXP]


Lex_! ©   (2005-05-11 08:17:00) 

procedure TForm1.Button1Click(Sender: TObject);
var
vHttp: OleVariant;
vHtml: string;
begin
Memo1.Clear;
vHttp := CreateOleObject('Microsoft.XMLHTTP'); { Requires IE5 }
try
  vHttp.open('GET', ' http://capitalcity.combats.ru/inf.pl?login=Enzain&short=1', False, EmptyParam, EmptyParam);
  vHttp.send('');
  vHtml := vHttp.responseText;
except
  try
   vHttp.open('GET', ' http://sandcity.combats.ru/inf.pl?login=Enzain&short=1', False, EmptyParam, EmptyParam);
   vHttp.send('');
   vHtml := vHttp.responseText;
  except
     try

     except
     end;
  end;
end;
memo1.Lines.Text:=vHtml;
end;

такой вариант работает нормально ....
а вот такой:
procedure TMainForm.Button2Click(Sender: TObject);
var
vHttp: OleVariant;
vHtml: string;
i:integer;
ci:integer;
url:string;
limit:boolean;
str:TStringList;
begin
str:=TStringList.Create;
str.Text:='';
For i:=1 to dm.alllogins.RecordCount do
     begin
         limit:=false;
         ci:=1;
         dm.alllogins.RecNo:=i;
         str.Text:='';
         while (str.Text='') and (limit=false) do
             begin
             dm.citys.RecNo:=ci;
             url:=dm.citys.FieldByName('city').AsString+'inf.pl?short=1&login=';
             url:=url+dm.alllogins.FieldByName('Login').AsString;
              try
               vHttp := CreateOleObject('Microsoft.XMLHTTP'); { Requires IE5 }
               vHttp.open('GET', url, False, EmptyParam, EmptyParam);
               vHttp.send('');
               str.Text := vHttp.responseText;
               vHttp.free;
               ShowMessage(str.Text);
              except
              ci:=ci+1;
              if ci>dm.citys.RecordCount then limit:=true;
              end;
             end;
     if limit=false then
         begin
         dm.alllogins.Edit;
         dm.alllogins.FieldByName('city').AsString:=str.Values['gamecity'];
         dm.alllogins.FieldByName('status').AsString:=str.Values['login_online'];
         dm.alllogins.Post
         end;
     end;
end;

просто ничего не возвращает и все... в чем проблема не знаю ...
первый вариант на второй раз дает результат, во втором варианте есть такая же ссылка и она не открывается получается


Lex_!   (2005-05-11 13:00:00) [1]

Вообще тут:
   vHttp.open('GET', url, False, EmptyParam, EmptyParam);
   vHttp.send('');

там ошибка и до следующего не доходит (ошибка если не отвечает страница или редирект, так вот не отвечает или редирект на всех построенных с базы адресах, но они верны это точно.)

Тема закрыта в общем всем спасибо. Грабли нашлись.


VMcL   (2005-05-11 10:14:00) [2]

>> Lex_! ©   (11.05.05 08:30) [3]

> то же самое... до него просто не доходит ...

И в каком месте падает нужно угадать?


Lex_!   (2005-05-11 08:30:00) [3]


> VMcL

это в качестве эксперимента было без него такая же ерунда... убрал .. то же самое... до него просто не доходит ...


VMcL   (2005-05-11 08:25:00) [4]

> vHttp.free;

Убрать.


Lex_!   (2005-05-11 08:18:00) [5]

последний фрагмент про базу можно не рассматривать.
оно просто ничего не выводит и все (ShowMessage(str.Text);)


Наверх

Титульная страница Поиск, карта сайта Написать письмо