Autor Beitrag
Mathematiker
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Quizmaster
Beiträge: 2615
Erhaltene Danke: 1420

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 09.08.13 10:57 
Hallo,
nachdem ich mit tatkräftiger Hilfe von user profile iconMartok, user profile iconNersgatt und user profile iconGerd Kayser unter www.entwickler-ecke....rechnung_111877.html die Temperaturabfrage bei openweathermap.org hinbekommen habe, muss ich natürlich sofort ein neues Projekt beginnen.
Das ist der Vorteil, wenn man aus Spaß Programmieren kann und niemand einen unter Termindruck setzt, oder so ...

wetter

Das Programm fragt für einen der 3500 Orte in der Listbox jeweils die Wetterdaten ab und zeigt die Temperatur, Luftfeuchtigkeit, Luftdruck, Wind und Wolken an. Auf Wunsch erfolgt auch eine 14tägige Vorhersage.
Da ich die Suche über die geografischen Koordinaten laufen lasse, gibt's fast immer Werte. Natürlich kann man auch eigene Koordinaten eintragen.

Dass dieses kleine Programm dem einen oder anderen nur ein müdes Lächeln abringt, ist mir klar. Ich bin aber sehr zufrieden. Ich hätte nie gedacht, dass für mich so etwas möglich ist.
Übrigens: Übertreibt es bitte nicht beim Testen. Openweather gestattet nur 1000 kostenlose Anfragen je Stunde, also langsam klicken. :D
So, jetzt gehe ich mal auf Suche nach anderen Internetseiten, die irgendwelche Daten oder Funktionen kostenlos anbieten (z.B. formelmäßiges Integrieren einer Funktion).

Beste Grüße
Mathematiker

Rev 1: Windstärke statt Windgeschwindigkeit, kleine Fehler beseitigt.
Rev 2: mit Umschaltmöglichkeit auf Fahrenheit, gefühlter Temperatur und Druckmöglichkeit.
Rev 3: auf Wunsch von user profile iconHorst_H mit 14-Tage-Vorschau inkl. kubische Splines.
Rev 4: zusätzlich mit Luftdruckkurve.
Rev 5: in der 14 Tage Vorschau wird der Temperaturbereich angezeigt.
Rev 6: mit Einzelkurven für die Temperaturen morgens, mittags, abends und nachts.
Rev 7: auf poscreencenter geändert, außerdem sind die Orte als komprimierte Ressource enthalten.
Rev 8/9: Fahrenheitanzeige korrigiert, und zusätzlich (wichtig!) Anzeige der übermittelnden Wetterstation
Rev 10: alle Orte überprüft und UTF8-Problem vorerst geklärt.
Rev 11: Druckerauswahl hinzugefügt.
Rev 12: jetzt auch mit Weltkarte.
Rev 13: die Weltkarte kann gezoomt und verschoben werden.
Rev 14: Fehler beim Zoomen entfernt, Formular aufgeräumt, d.h. jetzt mit Menu, Kopiermöglichkeit für die Darstellung, Problem bei Übermittlung von 13 Tagen bei 14-Tage-Vorschau beseitigt.

Weltwetter

Rev 15: zusätzlich gibt es noch die Möglichkeit das Weltwetter anzuzeigen. Auf der Weltkarte wird für 40 ausgewählte Orte das aktuelle Wetter gezeigt.
Rev 16: Fehler in der Ortsliste beseitigt, zusätzlich wahlweise mit Niederschlagskurve in der 14Tage-Vorschau.
Rev 17: mit Sonnenaufgang und -untergang. 4 Links zu den ZDF-Wetterkarten.
Rev 18: Sonnenaufgang und -untergang in MEZ bzw. MESZ.
Rev 19: mit der Möglichkeit über einen Proxy-Server die Verbindung aufzubauen.
Rev 20: Proxy-Server wird automatisch erkannt.
Rev 21: geladene Daten werden gepeichert und frühestens nach 10 Minuten aktualisiert. Zoom auch bei der Weltwetterkarte möglich.
Rev 22: ein paar Fehler entfernt.
Rev 23: Openweathermap-Übermittlungsprobleme abgefangen.
Rev 24: weitere Probleme, bei unvollständigen Daten, korrigiert.
Rev 25: übermittelte Temperaturen in Kelvin werden korrekt ausgewertet.
Einloggen, um Attachments anzusehen!


Zuletzt bearbeitet von Mathematiker am So 26.01.14 00:07, insgesamt 33-mal bearbeitet

Für diesen Beitrag haben gedankt: Anika, FinnO, Hobby-Programmierer, Horst_H, jasocul, kolibri95, lenamarkert, Marc., Martok, Tranx
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Fr 09.08.13 11:11 
Du hast den Niederschlag vergessen. Bei "<precipitation mode="no"/>" regnet es nicht.
"<precipitation unit="3h" value="13" mode="rain"/>" bedeutet 13 mm Niederschlag in 3 Stunden.

Edit: Die 13 kann auch 1,3 mm bedeuten. Aber das muss ich hier noch untersuchen.


Zuletzt bearbeitet von Gerd Kayser am Fr 09.08.13 11:22, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Mathematiker
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1574
Erhaltene Danke: 275


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 09.08.13 11:17 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
So, jetzt gehe ich mal auf Suche nach anderen Internetseiten, die irgendwelche Daten oder Funktionen kostenlos anbieten (z.B. formelmäßiges Integrieren einer Funktion).

Herzlichen Glückwunsch, Du hast grade Deinen erste REST-Client gebastelt. :D (vielleicht ohne es wissen?).

Schau mal bei Marco Cantu. REST ist eins seiner Hobbys, er hat ein paar Beispielanwendungen gemacht: ajax.marcocantu.com/delphirest/default.htm und ajax.marcocantu.com/delphirest/page2.htm
Da kannst Du Dir vielleicht Ideen klauen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Quizmaster
Beiträge: 2615
Erhaltene Danke: 1420

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 09.08.13 11:26 
Hallo,
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Herzlichen Glückwunsch, Du hast grade Deinen erste REST-Client gebastelt. :D (vielleicht ohne es wissen?).

Danke und Du hast recht. Ich weiß gar nicht, was das ist.
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Schau mal bei Marco Cantu. REST ist eins seiner Hobbys, er hat ein paar Beispielanwendungen gemacht: ajax.marcocantu.com/delphirest/default.htm und ajax.marcocantu.com/delphirest/page2.htm

Danke. Werde ich sofort mir ansehen.

user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
Du hast den Niederschlag vergessen.

Richtig. Werde ich überarbeiten.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
NeulingMitFragen()
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Fr 09.08.13 13:24 
Hallo,
läuft ganz gut! Jedoch wäre eine "Suche" für den namen ganz gut. Man kann zwar den Anfangsbuchstaben drücken und dann die folgenden Buchstaben um zu gewünschten Namen zu kommen, jedoch wäre eine Suche eleganter.
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Fr 09.08.13 14:27 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Werde ich überarbeiten.

Mir ist noch aufgefallen, dass die Windstärke nicht in km/h angegeben wird, sondern in m/s.
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Quizmaster
Beiträge: 2615
Erhaltene Danke: 1420

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 09.08.13 15:14 
Hallo,
user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
Mir ist noch aufgefallen, dass die Windstärke nicht in km/h angegeben wird, sondern in m/s.

Danke, habe ich in der Revision 1 geändert; außerdem die Art des Niederschlags ergänzt und ein paar Schönheitskorrekturen durchgeführt.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Quizmaster
Beiträge: 2615
Erhaltene Danke: 1420

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Fr 09.08.13 22:10 
Hallo,
ich habe noch ein paar Änderungen in Revision 2 durchgeführt.
Zum einen läuft das Thermometer nun im realistischen Bereich von -40°C bis 60°C; 100°C Temperatur erreichen wir wohl auf der Erde nicht, trotz "Klimaerwärmung" :mrgreen: .

Außerdem wird der letzte gewählte Ort beim Schließen gespeichert und automatisch beim Neustart wieder ausgewählt.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 09.08.13 23:15 
Ich habe auch was Schönes: Wetterkarten vom ZDF

Beispiele:
.
wwwdyn.zdf.de/ext/weather/wind-brd-1.jpg
wwwdyn.zdf.de/ext/weather/uv-brd-0.jpg
wwwdyn.zdf.de/ext/weather/temp-brd-0.jpg

Infos:

Example 1:

You want to display a wind image, which contains the image for today, today night or tomorrow.
wwwdyn.zdf.de/ext/we...nd-brd-<x>.jpg.
(<x> is a number between 0 and 2 ; 0 is for today, 1 is for today night and 2 is for tomorrow)
Open the configuration and enter the string "http://wwwdyn.zdf.de/ext/weather/wind-brd-<randomnumber:0,2>.jpg" in your favoured weather image field and save it.
The next time you want to display this image, the expression <randomnumber:0,2> will be replaced in real-time with a valid random number between 0 and 2. The result is a wwwdyn.zdf.de/ext/weather/wind-brd-1.jpg.

Example 2:

You want to display a image, which contains the temperature, risk of forest fires or UV index randomly.
wwwdyn.zdf.de/ext/weather/temp-brd-0.jpg,
wwwdyn.zdf.de/ext/weather/forest-brd-0.jpg and
wwwdyn.zdf.de/ext/weather/uv-brd-0.jpg.
Open the configuration and enter the string
"http://wwwdyn.zdf.de/ext/weather/<randomword:temp,forest,uv>-brd-0.jpg" in your favoured weather image field and save it.
The next time you want to display this image, the expression <randomword:temp,forest,uv> will be replaced in real-time with a random word, the result is a URL like wwwdyn.zdf.de/ext/weather/uv-brd-0.jpg.

Example 3:

You want to display a image slideshow, which contains the rain radar for the last 6 hours.
"http://wwwdyn.zdf.de/ext/weather/rain-brd-0-<xx>.jpg". (<xx> is a number between 0 and 24 )
Open the configuration and enter the string "wwwdyn.zdf.de/ext/we...t;rangenumberlz:0,24 >.jpg" in your favoured weather image field and save it.
The next time you want to display this image, the expression <ranngenumberlz:0,24> enables the plugin to load images between "rain-brd-0-00.jpg" and "rain-brd-0-24.jpg", to build a slideshow and to display this.

Example 4:

You want to display a image slideshow, which contains the satellite in retrospect for Europe.
"http://wwwdyn.zdf.de/ext/weather/sat-euri-0-<x>.jpg". (<x> is a number between 0 and 48_)
Open the configuration and enter the string "http://wwwdyn.zdf.de/ext/weather/sat-euri-0-<rangenumber:0,48>.jpg" in your favoured weather image field and save it.
The next time you want to display this image, the expression <rangenumber:0,48 > enables the plugin to load images between "sat-euri-0-0.jpg" and "sat-euri-0-48.jpg", to build a slideshow and to display this.

The manual contains a list of all available placeholders, which can be interpreted by the plugin currently. Please be aware, 1) that the URL can contain more than one placeholder and 2) that all placeholder definitions are case sensitive. Additionally I must point out, that the image preview functionality inside the configuration dialog isn't supported yet.

At least, some hints: As many of yours assumed, the described slideshow method can costs many web traffic and CPU power. To decrease this, I suggest to use smaller number ranges and the use of related expert settings (see chapter 4.9), e.g. image resize percentage and image frame delay.
---------------------------------------
wwwdyn.zdf.de/ext/weather/sat-euri-0-1.jpg
wwwdyn.zdf.de/ext/weather/sat-euri-0-x.jpg.
---<x> is a number between 0 and 48
wwwdyn.zdf.de/ext/weather/wind-brd-1.jpg
www.worldweather.org...c/colorMap-cloud.png
wwwdyn.zdf.de/ext/weather/sat-euri-0-0.jpg
wwwdyn.zdf.de/ext/weather/sat-euri-0-1.jpg
wwwdyn.zdf.de/ext/weather/sat-brd-0.jpg
wwwdyn.zdf.de/ext/weather/temp-brd-0.jpg
wwwdyn.zdf.de/ext/weather/temp-brd-1.jpg
wwwdyn.zdf.de/ext/weather/temp-brd-2.jpg
wwwdyn.zdf.de/ext/weather/wind-brd-0.jpg
wwwdyn.zdf.de/ext/weather/wind-brd-1.jpg
wwwdyn.zdf.de/ext/weather/wind-brd-2.jpg
wwwdyn.zdf.de/ext/weather/uv-brd-0.jpg
wwwdyn.zdf.de/ext/weather/uv-brd-1.jpg
wwwdyn.zdf.de/ext/weather/uv-brd-2.jpg
wwwdyn.zdf.de/ext/weather/rain-brd-0.jpg
wwwdyn.zdf.de/ext/we...er/rain-brd-0-24.jpg
wwwdyn.zdf.de/ext/weather/poll-brd-0.jpg
wwwdyn.zdf.de/ext/weather/ozone-brd-0.jpg
wwwdyn.zdf.de/ext/we...er/preview-brd-0.jpg
www.astronomie.de/Im...laktuell/obssky1.gif


Zuletzt bearbeitet von hathor am Sa 10.08.13 12:27, insgesamt 1-mal bearbeitet

Für diesen Beitrag haben gedankt: Mathematiker
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6326
Erhaltene Danke: 128

Windows 7 + Windows 10
Tokyo Prof + CE
BeitragVerfasst: Sa 10.08.13 11:50 
user profile iconGerd Kayser hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Werde ich überarbeiten.

Mir ist noch aufgefallen, dass die Windstärke nicht in km/h angegeben wird, sondern in m/s.

Wenn ich mich richtig an mein Geographie-Studium erinnere, ist m/s die fachlich übliche Einheit. :wink: Für den Laien ist aber km/Std sicher leichter vorstellbar.

Bei deinen geographischen Angaben solltest du vielleicht noch etwas "sauberer" sein. Es ist nicht klar, ob du östlicher oder westlicher Länge meinst. Entsprechend südlicher/nördlicher Breite. Wer denken kann, dem ist das zwar klar, aber wenn ich ich schon pingelig bin, dann richtig. Wenn du dann noch die Werte in Grad, Minuten und Sekunden aufteilst, wäre das richtig schön.

Alles nur Kleinigkeiten und die spielen für die Wetter-Werte auch keine große Rolle, aber ich mag es halt, wenn alles zusammenpasst.

Ich verfolge fast alle deine Projekte. Du hast immer sehr interessante Dinge in Arbeit. Danke dafür. :beer:

Für diesen Beitrag haben gedankt: Mathematiker
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 10.08.13 12:30 

Für diesen Beitrag haben gedankt: Mathematiker
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 10.08.13 12:41 
user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:

Bei deinen geographischen Angaben solltest du vielleicht noch etwas "sauberer" sein. Es ist nicht klar, ob du östlicher oder westlicher Länge meinst. Entsprechend südlicher/nördlicher Breite. Wer denken kann, dem ist das zwar klar, aber wenn ich ich schon pingelig bin, dann richtig. Wenn du dann noch die Werte in Grad, Minuten und Sekunden aufteilst, wäre das richtig schön.


Das geht aus dem Vorzeichen hervor: Norden (N) und Osten (E) ist + (PLUS). PLUS wird aber üblicherweise weggelassen...
de.wikipedia.org/wik...raphische_L%C3%A4nge
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6326
Erhaltene Danke: 128

Windows 7 + Windows 10
Tokyo Prof + CE
BeitragVerfasst: Sa 10.08.13 12:53 
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:

Bei deinen geographischen Angaben solltest du vielleicht noch etwas "sauberer" sein. Es ist nicht klar, ob du östlicher oder westlicher Länge meinst. Entsprechend südlicher/nördlicher Breite. Wer denken kann, dem ist das zwar klar, aber wenn ich ich schon pingelig bin, dann richtig. Wenn du dann noch die Werte in Grad, Minuten und Sekunden aufteilst, wäre das richtig schön.


Das geht aus dem Vorzeichen hervor: Norden (N) und Osten (E) ist + (PLUS). PLUS wird aber üblicherweise weggelassen...
de.wikipedia.org/wik...raphische_L%C3%A4nge

Ich werde mich um sowas sicher nicht streiten, da es für das Projekt nicht maßgeblich ist, aber es ist bisher immer noch üblich, E/W bzw. S/N anzugeben.
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1643
Erhaltene Danke: 236

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Sa 10.08.13 13:35 
Hallo,

vielleicht hätte man das Thermometer als eine eigene Klasse definieren sollen, dem man eine image,Skala und Temperatur übergeben kann.
Ich habe ein paar kleinere Änderungen gemacht.
Beim Einlesen der Ini Datei, werden die Koordinaten in der Anzeige nicht geändert.
Ich GetUrltxt eingeführt, um auch unter Lazarus zum laufen zu bringen ( synapse/httpsend ist halt bei mir vorhanden )
Die Beschriftung des Thermometers mache ich nur einmal und habe sie aus PaintboxPaint verbannt und in Formactivate gepackt.
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
procedure Ttthermo.FormActivate(Sender: TObject);
var ini:tinifile;
      i,b,akth: integer;
begin
    listbox1.doublebuffered:=true;
    if fileexists(datenverzeichnis+'wetter.ini'then
    begin
       ini := TIniFile.create(datenverzeichnis+'wetter.ini');
       i := ini.readinteger('Start','Nr',0);
       ini.free;
       listbox1.itemindex:=i;
       ListBox1Click(self);//<- Koordinatenanzeige aktualisieren
    end
    else
      listbox1.itemindex:=574;

    tc:=30;

    //image beschriften
    With image.Picture.bitmap.canvas do
      begin
      brush.style:=bsclear;
      font.size:=10;
      b:=image.Picture.bitmap.width div 2+12;
      akth := 75;
      for i:=oben downto -40 do
      begin
        moveto(b,akth);
        if i mod 10 = 0 then
        begin
          lineto(b+30,akth);
          textout(b+20,akth-font.size-4,inttostr(i));
        end
        else
        begin
          lineto(b+15,akth);
        end;
        inc(akth,4);
      end;
    end;
end;

{$IFNDEF FPC}
function Ttthermo.GetURltxt(Url:string):string;
var
  IdHTTP1 : TIdHTTP;
  Mem : TMemoryStream;
begin
  IdHTTP1:=tidhttp.create;
  Mem := TMemoryStream.Create;
  result := '';
  try
        IdHttp1.Get(Url, Mem);
        if Idhttp1.ResponseCode = 200 then // 200 = okay
        begin
          setlength(result,mem.Size);
          move(pChar(mem.memory)^,result[1],mem.size);
        end
        else
          ShowMessage('Fehler beim Abruf der Wetterdaten!');
  finally
    Mem.Free;
    IdHttp1.Free;
  end;
end;
{$else}
function Ttthermo.GetURltxt(Url:string):string;
var
  Http : THttpSend;
begin
  result := '';
  Http:= THttpSend.create;
  try
    IF Http.HTTPMethod('GET',URL) then
      With http.Document do
        begin
        setlength(result,Size);
        move(pChar(memory)^,result[1],size);
        end;
  finally
    Http.free;
  end;
end;
{$ENDIF}
function Ttthermo.GetValue(const Was,Worin:string):string;
var
 von,bis,LenS:integer;
begin
  lenS := length(Worin);
  von:=pos(Was,Worin)+length(Was)+ length(' value=');
  // Suchen erstem nach'"'
  while (von<=lenS) and (Worin[von]<>'"'do
    inc(von);
  inc(von);
  bis := von;
  // Suchen abschliessendem '"'
  while (bis<=lenS) and (Worin[bis]<>'"'do
    inc(Bis);
  result := copy(Worin,von,bis-von);
end;

procedure Ttthermo.Button1Click(Sender: TObject);
var
  Adresse : string;
  s,s2    : string;
  r       : real;
  code,sel : integer;

begin
//Seaching by geographic coordinats  api.openweathermap.org/data/2.5/weather?lat=35&lon=139
  Adresse := 'http://openweathermap.org/data/2.5/weather?lat='
             + edit9.text
             + '&lon='
             + edit8.text
             + '&mode=xml'
             + '&units=metric'
             + '&lang=de';
  s := GetURltxt(Adresse);
  IF s <> '' then
  begin
    val(GetValue('temperature',s),r,code);
    edit5.text:=inttostr(round(r));

      sel:=listbox1.itemindex;
      if sel>=0 then begin
        listbox2.clear;
        s2:=listbox1.items[sel];
        listbox2.items.add(copy(s2,1,pos(#9,s2)-1));
        listbox2.items.add('Temperatur'+#9+format('%.1f °C',[r]));
        listbox2.items.add('Luftfeuchtigkeit'+#9+GetValue('humidity',s)+' %');

        val(GetValue('pressure',s),r,code);
        listbox2.items.add('Luftdruck'+#9+format('%.0f hPa',[r]));
        val(GetValue('speed',s),r,code);
        listbox2.items.add('Wind'+#9+format('%.1f m/s',[r]));
        listbox2.items.add('Windrichtung'+#9+GetValue('code',s));
        listbox2.items.add('Wolken'+#9+GetValue('clouds',s)+' %');
        s:=GetValue('mode',s);
        if s='no' then
          listbox2.items.add('Niederschlag'+#9+'-');
        if s='rain' then
          listbox2.items.add('Niederschlag'+#9+'Regen');
        if s='snow' then
          listbox2.items.add('Niederschlag'+#9+'Schnee');
//        val(wert('precipiation'),5,code);
//        val(wert('"rain" unit'),n2,code);
//        listbox2.items.add('Niederschlag'+#9+format('%.1f mm/h',[n1/n2]));
      end
    else
      ShowMessage('Fehler beim Abruf der Wetterdaten!');
  end;
end;

Der TUpDown1 an Edit5 hat falsche Grenzen mit MIN = -32 und MAX = +102 eingetragen.

Was noch etwas Spannung reinbringen würde wäre eine Suche im Umkreis.
Koordinate vorgegeben und nach Abstand sortierte Liste von Orten.

Gruß Horst

Für diesen Beitrag haben gedankt: Mathematiker
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Quizmaster
Beiträge: 2615
Erhaltene Danke: 1420

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 10.08.13 13:58 
Hallo,
in der Revision 3/4 habe ich einige Änderungen durchgeführt.
user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich mich richtig an mein Geographie-Studium erinnere, ist m/s die fachlich übliche Einheit.

In der Anzeige werden jetzt m/s und km/h gezeigt.

user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:
Es ist nicht klar, ob du östlicher oder westlicher Länge meinst. Entsprechend südlicher/nördlicher Breite. ...

Unter den Dezimangaben von Breite und Länge gebe ich zusätzlich die Angaben in S/N bzw. O/W und in ° ' ".
Die Eingabe muss erst einmal als rationale Zahl bleiben, wird aber vielleicht auch noch im Gradmaß.

user profile iconjasocul hat folgendes geschrieben Zum zitierten Posting springen:
... aber es ist bisher immer noch üblich, E/W bzw. S/N anzugeben.

Ich habe aber alle "E" gegen die deutschen "O" getauscht. Bei "denglisch" werde ich immer nervös.

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Skala zu den Windgeschwindigkeiten: de.wikipedia.org/wiki/Beaufortskala

Danke, werde ich noch berücksichtigen.

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Beim Einlesen der Ini Datei, werden die Koordinaten in der Anzeige nicht geändert.

Habe ich in der Revision 3 schon geändert. Der blöde Fehler ist mir erst heute aufgefallen.

user profile iconHorst_H hat folgendes geschrieben Zum zitierten Posting springen:
Was noch etwas Spannung reinbringen würde wäre eine Suche im Umkreis.
Koordinate vorgegeben und nach Abstand sortierte Liste von Orten.

Interessanter Vorschlag. Werde darüber nachdenken.
Deine Hinweise zur Korrektur des Textes sind wie immer richtig gut. Danke.

Außer dem Genannten habe ich noch die "allgemeine Wetterbeschreibung" hinzugefügt und die von Openweather vorgeschlagenen kleinen Bilder.
Bei denen bin ich aber auf ein Problem gestoßen. Der Versuch
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
     IdHttp1.Get('http://openweathermap.org/img/w/10d.png', Mem);
     mem.position:=0;
     bild:=tpngobject.create;
     bild.loadfromstream(mem);
     bild.free;
ging schief. Die Abfrage aus dem Netz funktioniert, aber PNG meldet eine fehlerhafte Datei. Das Gleiche passiert auch bei Hathors tollen Vorschlägen zu den ZDF-Wetterbildern.
Irgendwie habe ich das Verfahren noch nicht verstanden.
Aus diesem Grund habe ich die Bilder im Moment in eine Ressource gepackt.

Wird "automatisch aktualisieren" gewählt ruft das Programm je Minute genau einmal die Daten aus dem Netz ab und aktualisiert diese.
Außerdem habe ich die Abfrage der XML-Datei verbessert.
Weitere Änderungen werde ich mit Sicherheit vornehmen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein


Zuletzt bearbeitet von Mathematiker am Sa 10.08.13 14:09, insgesamt 1-mal bearbeitet
Gerd Kayser
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 632
Erhaltene Danke: 121

Win 7 32-bit
Delphi 2006/XE
BeitragVerfasst: Sa 10.08.13 14:20 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
aber PNG meldet eine fehlerhafte Datei.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
  Mem := TMemoryStream.Create;
  try
    IdHttp.Get('http://openweathermap.org/img/w/01d.png', Mem);
    if Idhttp.ResponseCode = 200 then // 200 = okay
      begin
        Mem.Position := 0;
        PNGBild := TPngImage.Create;
        try
          PNGBild.LoadFromStream(Mem);
          Image.Picture.Assign(PNGBild);
        finally
          PNGBild.Free;
        end;
      end
    else
      ShowMessage('Fehler beim Abruf des Wettericons!');
  finally
    Mem.Free;
  end;

Die Frage ist, ob Dein Delphi das unterstützt. Ansonsten würde ich alle Wetterbildchen mit dem Internetexplorer runter laden und beim Abspeichern in JPG umwandeln. Die Iconliste findest Du hier: bugs.openweathermap....ther_Condition_Codes

Für diesen Beitrag haben gedankt: Mathematiker
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 10.08.13 15:50 
Das geht einfacher, um irgend etwas aus dem Web auf der Festplatte zu speichern:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button3Click(Sender: TObject);
var fs: TFileStream;
begin
  fs := TFileStream.Create('F:\01d.png', fmCreate); //bei mir F: wegen Schreibrechten als Admin
  try
    IdHTTP1.Get('http://openweathermap.org/img/w/01d.png', fs);
  finally
    fs.Free;
  end;
end;
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 10.08.13 16:07 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
...Die Abfrage aus dem Netz funktioniert, aber PNG meldet eine fehlerhafte Datei. Das Gleiche passiert auch bei Hathors tollen Vorschlägen zu den ZDF-Wetterbildern.
Irgendwie habe ich das Verfahren noch nicht verstanden.

Wird "automatisch aktualisieren" gewählt ruft das Programm je Minute genau einmal die Daten aus dem Netz ab und aktualisiert diese.

Beste Grüße
Mathematiker


Kommt darauf an, was aktualisiert werden soll: 15 Minuten reicht bei Werten, 60 Minuten bei Grafiken

ZDF-Wetterbild - Download:

Beispiel:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button4Click(Sender: TObject);
var fs: TFileStream;
begin
  fs := TFileStream.Create('F:\sat-euri-0-1.jpg', fmCreate);
  //bei mir F: wegen Schreibrechten als Admin: Als Administrator ausführen
  try
    IdHTTP1.Get('http://wwwdyn.zdf.de/ext/weather/sat-euri-0-1.jpg', fs);
  finally
    fs.Free;
  end;
end;
Mathematiker Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Quizmaster
Beiträge: 2615
Erhaltene Danke: 1420

Win 7, 8.1, 10
Delphi 5, 7, 10.1
BeitragVerfasst: Sa 10.08.13 19:35 
Hallo,
im ersten Beitrag habe ich ein zweites Programm ergänzt.

Während das 1.Programm (wetter.zip) nur das aktuelle Wetter des Ortes anzeigt, erhält man im zweiten (wetter2.zip) auch eine Wettervorhersage für die nächsten 2 Tage.
Mir gefällt das zweite besser, aber es ist natürlich Geschmackssache.

user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
Das geht einfacher, um irgend etwas aus dem Web auf der Festplatte zu speichern:

Danke für den Hinweis. Mir wäre es aber lieber die Abbildung nur im Speicher zu halten und gleich zu verarbeiten.
Ich werde auf jeden Fall auch Deine Idee testen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 10.08.13 20:02 
Es ist besser, die Wetter-Pics gleich nach dem Programmstart zu laden und zu speichern, dann hat man sie gleich blitzschnell, wenn man sie sehen will. Man kann dafür Eingabepausen nutzen -> GetLastInputInfo.