Autor Beitrag
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1569
Erhaltene Danke: 273


Delphi 10 Seattle Prof.
BeitragVerfasst: Mi 21.08.13 14:23 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
Lese ich ...
user profile iconNersgatt hat folgendes geschrieben Zum zitierten Posting springen:
Die Herausforderung wäre hier den Server zu schaffen (der aus Sicht von Openweathermap natürlich ein Client ist).

wird es mir leicht unwohl. Dafür werde ich wohl noch eine Menge lernen müssen.

Im Prinzip ist das ja nur ein HTTP-Server. Dafür bringt Indy die Klasse TIdHttp mit. Ich würde mal behaupten, der Lernaufwand ist nicht viel größer, als er beim Client war. Und die Herbstferien kommen bestimmt. :D

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 21.08.13 16:33 
From Switzerland:
...Proxy Server Einstellungen des IE abfragen:
www.swissdelphicente...showcode.php?id=2110

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: Do 22.08.13 12:16 
Hallo,
user profile iconhathor hat folgendes geschrieben Zum zitierten Posting springen:
www.swissdelphicente...showcode.php?id=2110

Danke. Die Lösung ist ähnlich zu der, die ich in der DP gefunden habe.

In Revision 20 wird nun der evtl. vorhandene Proxy-Server automatisch erkannt und dessen Parameter übernommen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: So 08.09.13 14:31 
Moin! Noch ein paar Anregungen meinerseits, damit Dir ja nicht langweilig wird :D.

Aktuell wird das Wetter für im 3h Abstand vorausgesagt und untereinander bzw. nebeneinander in Spalten dargestellt.
Übersichtlicher wäre es, wenn man noch zusätzlich die Anordnung dahingehend ändern könnte, dass das Wetter für den jeweiligen Tag in einer eigenen Spalte angezeigt wird.
So wie es normalerweise auch üblich ist.

Angenommen ich bin auf Reise oder wohne nicht in Deutschland: Da ist es verdammt blöd, die Zeitverschiebung ständig einzurechnen.
Könntest Du in den Programmoptionen die Zeitzone einstellen lassen? Und Standardmäßig die vom System eingestellte verwenden?

Wetterabfragen: Beim Klick auf auf einer der Abfragebutton sendest Du jeweils eine Anfrage an den Wetter-Server. Das ist unnötig, denn die Wetterdaten ändern sich nicht sekündlich oder minütlich.
Eventuell speicherst Du in einer "temporären" Datei die letzten Wetterdaten mit Zeitstempel ab und wenn diese nicht zu alt sind, lädst Du diese stattdessen.
So wird dann auch der Wechsel bei der Anzeige zwischen "Weltwetter" und "Internetabfrage" beschleunigt und es spart Traffic.

Ein Edit-Feld, um den Städtename einzugeben, wobei während der Eingabe bereits gefilert wird.
Zwar springt bei der blinden Eingabe in die Listebox der Index schon zum korrekten Begriff, doch ab und an vertippt man sich und es wird nicht der gesuchte Eintrag ausgewählt. Existiert dieser Eintrag nicht? Wird er anders geschrieben? Hat man sich vertippt?

Favoriten in der Städteauswahl, die stets ganz oben stehen. Zwar wird immer der letzte Ort bereits gespeichert vor dem Schließen des Programmes, aber wenn ich mir mehrere Orte wichtig sind, ist es doch bequemer, diese nicht stets erst suchen zu müssen.

Was spricht gegen ein Reinzoomen in die Karte durch Scrollen?

Hint beim Mouseover über einen Punkt auf der Karte, der den Namen der Stadt anzeigt.
Selbiges beim Weltwetter. Eventuell könnte man hier die Zeitzonen noch eintragen.

Hint mit Beschreibung beim Mouseover über die Kurven.


Ich denke das reicht erstmal. :)
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: So 08.09.13 22:11 
Hallo,
Danke für die vielen Anregungen. Ein paar habe ich schon umgesetzt (Revision 21), bei den anderen dauert es noch etwas.
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Beim Klick auf auf einer der Abfragebutton sendest Du jeweils eine Anfrage an den Wetter-Server. Das ist unnötig, denn die Wetterdaten ändern sich nicht sekündlich oder minütlich.

Vollkommen richtig. Deshalb werden die Daten jetzt auch gespeichert. Nach einer Abfrage wird frühestens 10 Minuten später wieder das Internet bemüht.
Damit geht jetz auch ansatzweise
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Was spricht gegen ein Reinzoomen in die Karte durch Scrollen?

Zwar muss man im Moment immer noch die zwei kleinen Schalter nutzen. Es funktioniert jetzt aber auch bei der Weltwetterkarte.

Alles andere, wie schon oben gesagt, sehe ich mir auch noch an.
Im Quelltext befindet sich jetzt
ausblenden Delphi-Quelltext
1:
{$DEFINE EEVARIANTE}					

Bitte nicht löschen, da nur dann korrekt compiliert werden kann. Die andere Variante ist meine "interne".

user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
... damit Dir ja nicht langweilig wird :D.

Langweilig? So etwas kenne ich nicht. :wink:
Durch meinen Kopf schwirren schon wieder viele neue Sachen, aber die Zeit dafür müsste man haben.
Ich bin nur in der EE etwas ruhiger, da ich nicht gleich wieder jemandem "auf den Schlips treten" möchte. :(

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 09.09.13 19:36 
Wollte mir den Quelltext auch mal ansehen. Habe das ganze deshalb versucht zu compilieren. Da wird aber die Datei grundx.* nicht gefunden. Wo kommt die her ? In der Zip ist sie jedenfalls nicht drin.

_________________
Gruß
Hansa
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: Mo 09.09.13 20:35 
Hallo,
user profile iconhansa hat folgendes geschrieben Zum zitierten Posting springen:
Wollte mir den Quelltext auch mal ansehen. Habe das ganze deshalb versucht zu compilieren. Da wird aber die Datei grundx.* nicht gefunden.

Fehler meinerseits. :autsch: Tut mir leid.
In der Unit uwetter2 wird die grundx.* nur gerufen, wenn keine EEVARIANTE compiliert. In der *.dpr einfach löschen.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Mo 09.09.13 21:41 
Die Kerle hier die gucken sich nicht mal den Quelltext an ? tsts :mrgreen: Aber egal, das compiliert jetzt. Allerdings, der Quelltext ist ja auch ellenlang. Wo werden die von idHTTP gelieferten Ergebnisse denn ans Programm übergeben ? Bei 2000 Zeilen ist das echt auf die Schnelle nicht einfach zu finden. Habe das Ganze mal (sehr) stark verkürzt :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
  IdHttp1.Get(Adresse);
  if Idhttp1.ResponseCode <> 200 then  // 200 = okay
    ShowMessage('Fehler beim Abruf der Wetterdaten!');
  IdHTTP1.free;


Bis dahin kommt zumindest keine Fehlermeldung. Die Koordinaten habe ich dabei fest eincodiert, nur, wie komme ich jetzt an das Ergebnis ?

_________________
Gruß
Hansa
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: Mo 09.09.13 22:03 
Hallo,
der wesentliche Teil der Internetabfrage ist z.B. für die 2-Tages-Vorschau eines Ortes
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
  IdHTTP1:=tidhttp.create;
  Adresse := 'http://openweathermap.org/data/2.5/forecast?'
             + 'lat='
             + edit9.text   //Breite
             + '&lon='
             + edit8.text   //Länge
             + '&mode=xml'
             + '&units=metric'
             + '&lang=de';
  Mem := TMemoryStream.Create;  //zur Aufnahme des XML-Textes
  try
    IdHttp1.Get(Adresse, Mem);  //Abfrage  
    mem.savetofile('daten.000');  //<--- nur wichtig um die gelieferten Daten auf der Festplatte zu parken
    if Idhttp1.ResponseCode = 200 then // 200 = okay
    begin
      mem.position:=0;
      liste.LoadFromStream(Mem);  //Einladen in eine TStringlist
    end
  finally
    Mem.Free;
  end;
  IdHTTP1.free;

Da mein Delphi 5 noch kein XML kennt, muss ich dann die Daten in liste Stück für Stück auseinandernehmen und auswerten.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mo 09.09.13 22:24 
Ich wollte Dein Programm auch noch einmal kompilieren, allerdings hat sich mittlerweile der Name und die Parameterreihenfolge einer funktioniert geändert.
So kompiliert er nun den Quelltext auch für neuere Delphi-Versionen (ab 2009):
ausblenden Delphi-Quelltext
 
348:
349:
350:
351:
352:
353:
354:
{ ... }
      {$IFDEF CONDITIONALEXPRESSIONS}
        {$IF CompilerVersion >= 20.0}
          ZDecompress(InpBuf, sz, OutBuf, OutBytes, 0);
        {$ELSE}
          DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
        {$IFEND}
      {$ENDIF}


Einen anderen Fehler betrifft
ausblenden Delphi-Quelltext
 
1265:
{ ... }
mem.savetofile(datenverzeichnis+'wert.v2');

Dein Programm erzeugt zwar einen Ordner Namens "C", allerdings ist dieser Schreibgeschützt und ich erhalte die Fehlermeldung "Zugriff verweigert". :nixweiss:
Das betrifft allerdings nur die von mir kompilierte Variante. Ich kann auch einen anderen Pfad hardcoden, der funktioniert dann.

Zitat:
Ich bin nur in der EE etwas ruhiger, da ich nicht gleich wieder jemandem "auf den Schlips treten" möchte. :(

Wem bist Du denn jeweils auf den Schlips getreten? Ich sehe jedenfalls Deine Aktivitäten hier als Bereicherung der EE. ;)
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: Mo 09.09.13 22:55 
Hallo,
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
So kompiliert er nun den Quelltext auch für neuere Delphi-Versionen (ab 2009):
ausblenden Delphi-Quelltext
 
348:
349:
350:
351:
352:
353:
354:
{ ... }
      {$IFDEF CONDITIONALEXPRESSIONS}
        {$IF CompilerVersion >= 20.0}
          ZDecompress(InpBuf, sz, OutBuf, OutBytes, 0);
        {$ELSE}
          DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
        {$IFEND}
      {$ENDIF}


Danke, werde ich einbauen.
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Einen anderen Fehler betrifft
ausblenden Delphi-Quelltext
 
1265:
{ ... }
mem.savetofile(datenverzeichnis+'wert.v2');

Dein Programm erzeugt zwar einen Ordner Namens "C", allerdings ist dieser Schreibgeschützt und ich erhalte die Fehlermeldung "Zugriff verweigert".

Hier habe ich die Vermutung, dass die modernen Delphi mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function GetWinSpecialFolder(CSIDLFolder: integer): AnsiString;
begin
    SetLength(Result, MAX_PATH);
    SHGetSpecialFolderPath(0, PChar(Result), CSIDLFolder, false);
    SetLength(Result, StrLen(PChar(Result)));
    if (Result <> ''then
      Result := IncludeTrailingBackslash(Result);
end;

function  datenverzeichnissuchen:string; <-- hier vielleicht besser ansistring ???
begin
{$IFNDEF EEVARIANTE}
    result := IncludeTrailingBackslash(GetWinSpecialFolder(CSIDL_APPDATA)+aktuellname2);
{$ELSE}
    result := IncludeTrailingBackslash(GetWinSpecialFolder(CSIDL_APPDATA)+'Wetterdaten');
{$ENDIF}
end;

nicht zurechtkommen. Vielleicht muss es ansistring heißen?
Bei meinem Win 8 wird im Nutzerverzeichnis der Ordner ...\Roaming\Wetterdaten angelegt und die Daten dorthin kopiert.
Allerdings habe ich von dieser Problematik wenig Ahnung und eigentlich nur übernommen, was ich bei anderen gesehen habe.

user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Wem bist Du denn jeweils auf den Schlips getreten?

Ist schon ein paar Tage her.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Mo 09.09.13 23:03 
user profile iconMathematiker hat folgendes geschrieben Zum zitierten Posting springen:
nicht zurechtkommen. Vielleicht muss es ansistring heißen?
Nein, ich hab den Fehler gefunden:

ausblenden Delphi-Quelltext
 
317:
{ ... }
function GetWinSpecialFolder(CSIDLFolder: integer): String;
Hier muss es ein (Unicode)String, statt einem AnsiString sein.
hansa
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3079
Erhaltene Danke: 9



BeitragVerfasst: Di 10.09.13 00:07 
Habe vorhin in der Dokumentation gesehen, das man man dem Get doch besser einen Stream mitgeben muss. Mich hat das "Mem" irritiert, weil ich dachte das wäre ein TMemo ( ist aber ein Stream). @Mathematiker : Du benutzt kein CNPack, oder ? Da kann man Standard-Prefixe für Komponenten vorgeben. Dann wird automatisch ein Vorschlag erzeugt.

_________________
Gruß
Hansa
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Do 12.09.13 15:48 
Du hast beim Merken des letzten abgefragten Orts vor dem Schließen Aachen ausgeschlossen. :bawling:
Der erste Eintrag der Listbox beginnt bei 0, nicht bei 1:
ausblenden Delphi-Quelltext
 
1384:
{ ... }
if sel >= 0 then

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: Do 12.09.13 16:52 
Hallo,
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
Du hast beim Merken des letzten abgefragten Orts vor dem Schließen Aachen ausgeschlossen. :bawling:

Danke für den Hinweis.
In der Revision 22 habe ich diesen und ein paar weitere Fehler entfernt.

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 13.09.13 19:00 
Hallo,
Openweathermap hat heute ein paar Übermittlungsprobleme bei der 14-Tage-Vorschau. Für einige Orte gibt's "nur" für 10 Tage Wetterwerte.
Dieses Problem hatte ich noch nicht abgefangen; mit dem Ergebnis eines Programmabsturzes.
In der Revision 23 ist dies jetzt auch ok.

Beste Grüße
Mathematiker

_________________
Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Anika
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 30
Erhaltene Danke: 2

Windows 7
Delphi 7
BeitragVerfasst: So 29.09.13 00:25 
Das Programm gefällt mir sehr.
Aber seit ein paar Tagen bekomme ich bei dem aktuellen Wetter immer eine Fehlermeldung und kein ergebnis.
Was kann das sein?

Liebe Grüße
Anika

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: So 29.09.13 08:40 
Hallo,
user profile iconAnika hat folgendes geschrieben Zum zitierten Posting springen:
Aber seit ein paar Tagen bekomme ich bei dem aktuellen Wetter immer eine Fehlermeldung und kein ergebnis.

Danke für den Hinweis.
Da ich es selbst gar nicht mehr probiert habe, habe ich es natürlich nicht gemerkt. :autsch:

Openweathermap übermittelt seit einiger(?) Zeit für die 2-Tage-Vorhersage maximal 16 Datensätze, mitunter werden auch einige Uhrzeiten übersprungen. Da ich das nicht berücksichtigt hatte, kam es zur fehlerhaften Auswertung.
Die langfristige Vorhersage ist jetzt auch "nur" noch 10 Tage lang, was auch vernünftiger ist, da niemand 2 Wochen Wetter vorherberechnen kann.
Bei der Abfrage des Weltwetters übermitteln manchmal einzelne Stationen keine Werte. Zum Beispiel zeigte mein Programm für die Sahara 0° Celsius? Es kann in der Wüste zwar sehr kalt werden, aber die 0° ergaben sich, da der Datensatz leer war, also Blödsinn.

Alle diese Probleme glaube ich in Revision 24 gelöst zu haben.

Übrigens gibt es eine weitere, positive Änderung bei Openweathermap. Man kann jetzt kostenlos aller 5 Sekunden die Daten abfragen. Dennoch belasse ich es erst einmal bei minimal 10 Minuten, bevor die Daten neu geladen werden.

Mit besten Grüßen
Mathematiker

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

Für diesen Beitrag haben gedankt: Anika
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: So 26.01.14 00:09 
Seit heute übermittelt OpenWeatherMap einige Temperaturwerte, aber nicht alle und ohne spezielle Kennzeichnung, in Kelvin und nicht in °Celsius.
Das Problem ist in Version 25 jetzt abgefangen.

Beste Grüße
Mathematiker

Für diesen Beitrag haben gedankt: Anika
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1643
Erhaltene Danke: 236

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mi 15.08.18 10:11 
Hallo,

ich war gerade beim löschen alter Dateien :oops: , da testete ich nochmals das Programm.
Es hat sich was geändert, es gab Fehler 401 irgendeine appID würde fehlen.
Mal für London von den Beispielen dort:
"http://samples.openweathermap.org/data/2.5/weather?id=2172797&appid=b6907d289e10d714a6e88b30761fae22"
Ohne Eröffnung eines Kontos geht es wohl nicht mehr
openweathermap.org/appid
16 Tage gibt es kostenlos auch nicht mehr, aber das ist ohnehin geraten :-)
openweathermap.org/price

Gruß Horst