![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос - как достать информацию из сети?
Aleks_Grey © (2004-11-11 06:13:00)Приветствую, Мастера!
Есть некоторая программа, которой позарез требуется курс нескольких валют. Как сделать так, чтобы по определенному событию программа лезла в интернет и доставала их оттуда? Заранее благодарен.
SlyFox (2004-11-12 14:50:00) [1]Когда то давным давно делал вот так. Качается страница с курсами c cbr.ru, парсится и выводится все это в файл. Код под себя уж сам адаптируй.
procedure TForm1.XPSpeedButton2Click(Sender: TObject);
var
Fin, Fout: TextFile;
Dat,Str,OutF,Mess: String;
I: Integer;
sr: TSearchRec;
begin
Mess:='';
OutF:='curs.htm';
NMHTTP1.InputFileMode:=True;
NMHTTP1.Body:=OutF;
NMHTTP1.Get(' http://www.cbr.ru/currency_base/D_print.asp?date_req='+date1);
begin
if FindFirst(OutF,faReadOnly,sr)=0 then
begin
AssignFile(Fin, OutF);
Reset(Fin);
AssignFile(Fout, '\curs.txt';
Rewrite(Fout);
Str:='';
While Pos('<tr bgcolor="#ffffff">',Str)=0 do
begin
ReadLn(Fin,Str);
I:=Pos('установил с ',Str);
if I>0 then Dat:=Copy(Str,I+12,10);
end;
While not EOF(Fin) do
begin
ReadLn(Fin,Str);
I:=Pos('>',Str);
if (Copy(Str,I+1,3)='810') or (Copy(Str,I+1,3)='978') then
begin
WriteLn(Fout,CnvAnsiToOem('ФОНД :')+Copy(Str,I+1,3));
WriteLn(Fout,CnvAnsiToOem('ДАТА :')+Copy(Date1,1,2)+'.'+Copy(Date1,4,2)+'.'+Copy(Date1,7,4));
ReadLn(Fin,Str);
ReadLn(Fin,Str);
I:=Pos('>',Str);
Str:=Copy(Str,I+1,100);
I:=Pos('<',Str);
WriteLn(Fout,CnvAnsiToOem('КОЛИЧЕСТВО:')+Copy(Str,1,I-1));
ReadLn(Fin,Str); ReadLn(Fin,Str); ReadLn(Fin,Str); ReadLn(Fin,Str);
I:=Pos('>',Str);
Str:=Copy(Str,I+1,100);
I:=Pos('<',Str);
Str:=Copy(Str,1,I-1);
I:=Pos(',',Str);
If I>0 then Str[I]:='.';
WriteLn(Fout,CnvAnsiToOem('СТОИМОСТЬ :')+Str);
ReadLn(Fin,Str); ReadLn(Fin,Str);
IF Pos('<tr bgcolor="#ffffff">',Str)=0 then break;
end;
end;
CloseFile(Fin);
CloseFile(Fout);
ShowMessage(Mess);
end
else
begin
ShowMessage('Файл испорчен! Повторите загрузку еще раз.');
Exit;
end;
end
end;