Autor |
Beitrag |
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Fr 09.08.13 10:57
Hallo,
nachdem ich mit tatkräftiger Hilfe von Martok, Nersgatt und Gerd 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 ...
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.
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 Horst_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
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: 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
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 09.08.13 11:17
Mathematiker hat folgendes geschrieben : | 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. (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
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Fr 09.08.13 11:26
Hallo,
Nersgatt hat folgendes geschrieben : | Herzlichen Glückwunsch, Du hast grade Deinen erste REST-Client gebastelt. (vielleicht ohne es wissen?). |
Danke und Du hast recht. Ich weiß gar nicht, was das ist.
Danke. Werde ich sofort mir ansehen.
Gerd Kayser hat folgendes geschrieben : | 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
|
Verfasst: 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
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Fr 09.08.13 14:27
Mathematiker hat folgendes geschrieben : | Werde ich überarbeiten. |
Mir ist noch aufgefallen, dass die Windstärke nicht in km/h angegeben wird, sondern in m/s.
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Fr 09.08.13 15:14
Hallo,
Gerd Kayser hat folgendes geschrieben : | 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
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: 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" .
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
|
Verfasst: 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
Beiträge: 6386
Erhaltene Danke: 146
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Sa 10.08.13 11:50
Gerd Kayser hat folgendes geschrieben : | Mathematiker hat folgendes geschrieben : | 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. 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.
Für diesen Beitrag haben gedankt: Mathematiker
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 10.08.13 12:30
Für diesen Beitrag haben gedankt: Mathematiker
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 10.08.13 12:41
jasocul hat folgendes geschrieben : |
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
Beiträge: 6386
Erhaltene Danke: 146
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Sa 10.08.13 12:53
|
|
Horst_H
Beiträge: 1652
Erhaltene Danke: 243
WIN10,PuppyLinux
FreePascal,Lazarus
|
Verfasst: 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.
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); end else listbox1.itemindex:=574;
tc:=30;
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 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='); while (von<=lenS) and (Worin[von]<>'"') do inc(von); inc(von); bis := von; 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 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'); 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
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: Sa 10.08.13 13:58
Hallo,
in der Revision 3/4 habe ich einige Änderungen durchgeführt.
jasocul hat folgendes geschrieben : | 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.
jasocul hat folgendes geschrieben : | 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ß.
jasocul hat folgendes geschrieben : | ... 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.
Danke, werde ich noch berücksichtigen.
Horst_H hat folgendes geschrieben : | 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.
Horst_H hat folgendes geschrieben : | 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
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
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Sa 10.08.13 14:20
Für diesen Beitrag haben gedankt: Mathematiker
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 10.08.13 15:50
Das geht einfacher, um irgend etwas aus dem Web auf der Festplatte zu speichern:
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); try IdHTTP1.Get('http://openweathermap.org/img/w/01d.png', fs); finally fs.Free; end; end; |
|
|
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 10.08.13 16:07
|
|
Mathematiker
Beiträge: 2622
Erhaltene Danke: 1447
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: 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.
hathor hat folgendes geschrieben : | 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
|
Verfasst: 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.
|
|
|