Hallo Dio,
es handelt sich um einen Laufzeitfehler.
Frage, hast Du im Quellcode Deine IP-Adressen angepasst - oder verwendest Du die IP-Adressen, die im Quellcode hinterlegt sind?
Wenn Zeile 100 so aussieht:
dann ersetze sie durch:
Urache: [font="Courier"]ping[/font] wurde offensichtlich geändert. In der damaligen Version kam für den Fall, dass [font="Courier"]ping[/font] nicht erfolgreich verlief, eine Meldung mit dem Text "unreachable".
Mit dem [font="Courier"]/[/font] vor der Variablen [font="Courier"]conn[/font] wird geprüft, ob diese Variable mit dem Nullwert belegt ist (also nicht belegt ist). Dies ist der Fall, wenn der Ping-Befehl erfolglos war - also keine Verbindung besteht.
EDIT (19.03.2015):
Beim heutigen Testen hat ping ein Eigenleben entfaltet. ping ergab bei einer nicht erreichbaren IP-Adresse zuerst außer der ersten Zeile
keine weiteren Zeilen. Die Variable conn konnte dann keine zweite Zeile einlesen, in der entweder die Zeichenkette unreachable enthalten ist oder die Antwortzeit zurückgemeldet wird.
Nachdem ich auf die neuen Gegebenheiten umprogrammiert hatte, und nochmals den ping-Befehl mit geänderten Argumenten getestet hatte, funktionierte er dann so wie urpsürunglich programmiert.
Aus diesem Grunde sieht die Lösung nun wie folgt aus:
Zeile 100:
Aus dieser Zeile wird die Stärke der Programmiersprache Icon deutlich. Umgangssprachlich übersetzt bedeutet dies folgendes:
1. Führe den Befehl [font="Courier"]find()[/font] nur dann aus, wenn die Variable [font="Courier"]conn[/font] mit einem Wert ungleich dem Nullwert [font="Courier"]&null[/font] belegt ist
2. Wenn der Befehl [font="Courier"]find()[/font] aus dem Grund 1. nicht ausgeführt wird, dann scheitert [font="Courier"]find()[/font] - liefert also [font="Courier"]&fail[/font] zurück
3. Wenn der Befehl [font="Courier"]find()[/font] ausgeführt wird, aber die Textkette "[font="Courier"]Unrechable[/font]" nicht findet, dann scheitert [font="Courier"]find()[/font] ebenso
4. Wenn der Befehl [font="Courier"]find()[/font] ausgeführt wird und die Zeichenkette "[font="Courier"]Unreachable[/font]" gefunden wird, dann gibt [font="Courier"]find()[/font] die Position zurück, an der die zu suchende Zeichenkette gefunden wurde.
5. Der Wahrheitswert von [font="Courier"]find()[/font] wird negiert.
a) Bei Fall 2. folgt daraus [font="Courier"]not(&fail)[/font] ==> true
b) Bei Fall 3. folgt daraus [font="Courier"]not(&fail)[/font] ==> true
c) Bei Fall 4. folgt daraus [font="Courier"]not(position)[/font] ==> false
6. Ergibt 5. true wird eine entsprechende Meldung abgesetzt
Den Quellcode im Beitrag #11 habe ich angepasst.
Beste Grüße
Andreas