|
#1
|
||||
|
||||
Проноз погоды
Исходник для трасляции погоды но он почему то не робит
http://informer.gismeteo.ru/rss/34743.xml - ссылка откуда брать НО ВОТ не показывает ничего Код:
procedure TForm1.Button1Click(Sender: TObject); var S: TStringList; P,I: integer; USD,EUR,AFS,pM,pP: string; begin HTTP:=TIdHTTP.Create(nil); HTTP.HandleRedirects:=True; HTTP.ProtocolVersion:=pv1_0; HTTP.ProtocolVersion:=pv1_0; // S:=TStringList.Create; S.Text:=HTTP.Get('http://informer.gismeteo.ru/rss/34743.xml'); // Ïîãîäà P:=S.IndexOf('#---- Погода----'); // if not (P=-1) then begin for i:=0 to 5 do begin inc(P); if Pos('Температура' ,S.Strings[p])>0 then pM:=S.Strings[p]; if Pos('температура',S.Strings[p])>0 then pP:=S.Strings[p]; end; end; HTTP.Free; Delete(pM,1,pos('/',pM)); Delete(pM,1,pos(',',pM)); Delete(pM,pos(',',pM),20); Delete(pP,1,pos('/',pP)); Delete(pP,1,pos(',',pP)); Delete(pP,pos(',',pP),20); Edit1.text:=Pm; end; не спрашивайте у меня, ЗДЕСЬ СПРАШИВАЮ Я!!! |
#2
|
|||
|
|||
видимо не работает, потому что XML файл в юникоде, после получения файла, преобразуйте его в нормальный формат.
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#3
|
||||
|
||||
рекомендовал бы брать данные с xml информера http://informer.gismeteo.ru/xml/22546_1.xml и для разбора использовать msxml.IXMLDOMDocument
Пишу программы за еду. __________________ |
#4
|
|||
|
|||
ага, я на PHP писал скрипт, который по крону присылает СМС с погодой, и брал именно этот XML
взялся из неоткуда, ничего не прошу, помогаю просто так ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя |
#5
|
|||
|
|||
|
#6
|
|||
|
|||
Цитата:
|
#7
|
||||
|
||||
есть модуль InformerGismeteo:
Код:
unit Unit1; interface uses InformerGismeteo, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Memo1: TMemo; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var FInformerGismeteo: TInformerGismeteo; i: Integer; begin FInformerGismeteo:=TInformerGismeteo.Create; FInformerGismeteo.URL:='http://informer.gismeteo.ru/xml/22546_1.xml'; try if FInformerGismeteo.Refresh then begin Memo1.Lines.Add('Погода в '+URLDecode(FInformerGismeteo.Forecasts.TownName)); Memo1.Lines.Add(''); for i:=0 to FInformerGismeteo.Forecasts.Count-1 do begin Memo1.Lines.Add('Прогноз на '+FInformerGismeteo.Forecasts[i].GetDate+'. '+FInformerGismeteo.Forecasts[i].GetWeekday+'. '+FInformerGismeteo.Forecasts[i].GetTod+'. '+FInformerGismeteo.Forecasts[i].GetTime+' ч.'); Memo1.Lines.Add('Температура '+FInformerGismeteo.Forecasts[i].GetTemperature+' C'); Memo1.Lines.Add('Давление '+FInformerGismeteo.Forecasts[i].GetPressure+' мм рт.ст.'); Memo1.Lines.Add('Ветер '+FInformerGismeteo.Forecasts[i].GetWindDirection+' м/с'); Memo1.Lines.Add(FInformerGismeteo.Forecasts[i].GetCloudiness+'. '+FInformerGismeteo.Forecasts[i].GetPrecipitation+'.'); Memo1.Lines.Add(''); end; end; finally FInformerGismeteo.Free; end; end; end. Пишу программы за еду. __________________ |
#8
|
||||
|
||||
Я парсил так:
Код:
var i:integer; XMLDocument1: TXMLDocument; ytro,den,vecher,noch:string; tm:TSystemTime; begin SetTitleRus('GisMeteo Самара'); GetLocalTime(tm); CoInitialize(nil); XMLDocument1:=TXMLDocument.Create(nil); XMLDocument1.LoadFromFile('http://informer.gismeteo.ru/rss/28900.xml'); XMLDocument1.Active := true; XMLDocument1.XML.Text:=UTF8toAnsi(XMLDocument1.XML.Text); for i:=1 to 14 do XMLDocument1.XML.Delete(0); XMLDocument1.XML.Delete(1); for i:=1 to 6 do XMLDocument1.XML.Delete(2); XMLDocument1.XML.Delete(3); for i:=1 to 6 do XMLDocument1.XML.Delete(4); XMLDocument1.XML.Delete(5); for i:=1 to 6 do XMLDocument1.XML.Delete(6); XMLDocument1.XML.Delete(7); for i:=1 to 7 do XMLDocument1.XML.Delete(8); XMLDocument1.XML.Text:=StringReplace(XMLDocument1.XML.Text, '<title>', '', [rfReplaceAll, rfIgnoreCase]); XMLDocument1.XML.Text:=StringReplace(XMLDocument1.XML.Text, '</title>', '', [rfReplaceAll, rfIgnoreCase]); XMLDocument1.XML.Text:=StringReplace(XMLDocument1.XML.Text, '<description>', '', [rfReplaceAll, rfIgnoreCase]); XMLDocument1.XML.Text:=StringReplace(XMLDocument1.XML.Text, '</description>', '', [rfReplaceAll, rfIgnoreCase]); XMLDocument1.XML.Text:=StringReplace(XMLDocument1.XML.Text, ' ', '', [rfReplaceAll, rfIgnoreCase]); for i:=0 to XMLDocument1.XML.Count-1 do begin if Pos('температура ',XMLDocument1.XML.Strings[i])>0 then XMLDocument1.XML.Strings[i]:=copy(XMLDocument1.XML.Strings[i],12+Pos('температура ',XMLDocument1.XML.Strings[i]),length(XMLDocument1.XML.Strings[i])-Pos('температура ',XMLDocument1.XML.Strings[i])-12); if Pos(', давление',XMLDocument1.XML.Strings[i])>0 then XMLDocument1.XML.Strings[i]:=copy(XMLDocument1.XML.Strings[i],1,Pos(', давление',XMLDocument1.XML.Strings[i])-1); if Pos('Утро',XMLDocument1.XML.Strings[i])>0 then XMLDocument1.XML.Strings[i]:='Утро'; if Pos('День',XMLDocument1.XML.Strings[i])>0 then XMLDocument1.XML.Strings[i]:='День'; if Pos('Вечер',XMLDocument1.XML.Strings[i])>0 then XMLDocument1.XML.Strings[i]:='Вечер'; if Pos('Ночь',XMLDocument1.XML.Strings[i])>0 then XMLDocument1.XML.Strings[i]:='Ночь'; end; for i:=0 to XMLDocument1.XML.Count-1 do begin if Pos('Утро',XMLDocument1.XML.Strings[i])>0 then ytro:=XMLDocument1.XML.Strings[i+1]; if Pos('День',XMLDocument1.XML.Strings[i])>0 then den:=XMLDocument1.XML.Strings[i+1]; if Pos('Вечер',XMLDocument1.XML.Strings[i])>0 then vecher:=XMLDocument1.XML.Strings[i+1]; if Pos('Ночь',XMLDocument1.XML.Strings[i])>0 then noch:=XMLDocument1.XML.Strings[i+1]; end; XMLDocument1.Free; if (tm.wHour>=6) and (tm.wHour<=11) then begin //Writeln('Сейчас утро') ; Writeln('Утро: '+ytro); Writeln('День: '+den); Writeln('Вечер: '+vecher); Writeln('Ночь: '+noch); end; if (tm.wHour>=12) and (tm.wHour<=17) then begin //Writeln('Сейчас день'); Writeln('День: '+den); Writeln('Вечер: '+vecher); Writeln('Ночь: '+noch); end; if (tm.wHour>=18) and (tm.wHour<=23) then begin //Writeln('Сейчас вечер'); Writeln('Вечер: '+vecher); Writeln('Ночь: '+noch); end; if (tm.wHour>=0) and (tm.wHour<=5) then begin //Writeln('Сейчас ночь'); Writeln('Ночь: '+noch); end; Readln; |