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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.05.2011, 16:11
Аватар для RusSTEEL
RusSTEEL RusSTEEL вне форума
Новичок
 
Регистрация: 10.03.2011
Сообщения: 53
Репутация: 10
По умолчанию Проноз погоды

Исходник для трасляции погоды но он почему то не робит
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  
Старый 29.05.2011, 19:14
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

видимо не работает, потому что XML файл в юникоде, после получения файла, преобразуйте его в нормальный формат.
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #3  
Старый 29.05.2011, 19:15
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

рекомендовал бы брать данные с xml информера http://informer.gismeteo.ru/xml/22546_1.xml и для разбора использовать msxml.IXMLDOMDocument
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 29.05.2011, 19:18
Assistant Assistant вне форума
Продвинутый
 
Регистрация: 20.02.2011
Адрес: там где правят идиоты
Сообщения: 603
Версия Delphi: 7
Репутация: выкл
По умолчанию

ага, я на PHP писал скрипт, который по крону присылает СМС с погодой, и брал именно этот XML
__________________
взялся из неоткуда, ничего не прошу, помогаю просто так
ICQ: 593977748 - стучать в случае КРАЙНЕЙ необходимости, ну, или если вы со Ставрополя
Ответить с цитированием
  #5  
Старый 01.06.2011, 07:28
foka2002 foka2002 вне форума
Прохожий
 
Регистрация: 01.06.2011
Сообщения: 10
Репутация: 10
По умолчанию

Вот тут выберите.
http://pogoda.yandex.ru/informer/tips/
Ставится без проблем.
Ответить с цитированием
  #6  
Старый 01.06.2011, 13:56
RazzSpace RazzSpace вне форума
Прохожий
 
Регистрация: 01.06.2011
Сообщения: 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от foka2002
Вот тут выберите.
http://pogoda.yandex.ru/informer/tips/
Ставится без проблем.
Поставил себе на сайт , на мой взгляд даже лучше чем gismeteo
Ответить с цитированием
  #7  
Старый 02.06.2011, 14:30
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

есть модуль 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.
Вложения
Тип файла: rar InformerGismeteo.rar (6.1 Кбайт, 94 просмотров)
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #8  
Старый 02.07.2011, 09:01
Аватар для Casper-Hacker
Casper-Hacker Casper-Hacker вне форума
Начинающий
 
Регистрация: 19.05.2008
Сообщения: 147
Версия Delphi: x
Репутация: 15
По умолчанию

Я парсил так:
Код:
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;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter