@Matthias
wie es unter Ubuntu gelöst werden kann weiß ich jetzt leider nicht…
Nur das es sich bei dem Befehl variant_fix() um eine Windowsbasierte Erweiterung handelt. Näheres siehe unter
http://php.net/manual/de/function.variant-fix.php
variant_int() meckert er dann später auch an, kommt nämlich auch vor…
Fonzo
2. Mai 2016 um 16:06
22
Du kannst variant_fix und variant_int durch intval ersetzten dann kommt auch keine Fehlermeldung mehr.
PHP: intval - Manual
da die Formeln in dem Buch ja in vba vorliegen suchte ich vergleichbares in php.
In vba diese zwei Funktionen (siehe unter Beispiel auf folgender Seite):
https://msdn.microsoft.com/de-de/library/xh29swte%28v=vs.90%29.aspx
@Fonzo
Danke für die Info.
@Bernd
Ich hoffe, dass Du eine Lösung findest. Ich bin IPS-Neuling und arbeite mich gerade auch in PHP ein.
Matthias
Fonzo
2. Mai 2016 um 16:39
25
Genau das macht intval. Du dividierst ja eine Zahl durch etwas und bekommst z.B. 4.3 und willst jetzt nur 4 zum weiter bearbeiten.
aber ist da nicht ein Unterschied bei negativen Zahlen ?
Habe gerade mal
echo intval(99.8)."
"; //return 99
echo intval(-99.8)."
"; //return -99
echo intval(-99.2)."
"; //return -99
echo variant_int(99.8)."
"; //return 99
echo variant_fix(99.8)."
"; //return 99
echo variant_int(-99.8)."
"; //return -100
echo variant_fix(-99.8)."
"; //return -99
echo variant_int(-99.2)."
"; //return -100
echo variant_fix(-99.2)."
"; //return -99
Fonzo
2. Mai 2016 um 20:41
27
So genau habe ich mir die Formeln noch nicht angeschaut. Was willst Du denn was genau passiert?
Bei 99.6 soll 99 rauskommen. Und was soll bei einem Wert von -99.6 ausgegeben werden?
es ging sich nur darum das in den vba-Formeln aus dem Buch die Funktionen „int“ und „fix“ vorkommen und ich etwas vergleichbares in php gesucht habe…
Beispiel:
// Greenwich calendar date to Julian date conversion
function CDJD($day, $month, $year)
{
if ($month < 3){
$Y = $year - 1;
$M = $month + 12;}
else{
$Y = $year;
$M = $month;}
if ($year > 1582){
$A = variant_fix($Y / 100);
$B = 2 - $A + variant_fix($A / 4);}
else{
if (($year == 1582) And ($month > 10)){
$A = variant_fix($Y / 100);
$B = 2 - $A + variant_fix($A / 4);}
else{
if (($year == 1582) And ($month == 10) And ($day >= 15)){
$A = variant_fix($Y / 100);
$B = 2 - $A + variant_fix($A / 4);}
else{
$B = 0;}
}
}
if ($Y < 0){
$C = variant_fix((365.25 * $Y) - 0.75);}
else{
$C = variant_fix(365.25 * $Y);}
$D = variant_fix(30.6001 * ($M + 1));
$CDJD = $B + $C + $D + $day + 1720994.5;
return ($CDJD);
}
In bin mit den Kalenderfunktionen nicht so fit.
Aber eventuell gibt es da etwas fertiges:
PHP: gregoriantojd - Manual
Vielleicht gibt es ja noch mehr ‚fertiges‘.
Michael
Fonzo
2. Mai 2016 um 23:34
30
Ab IP-Symcon 4 liegt Latitude und Longitude schon in der Instanz Location, wenn diese dort eingetragen wurden. Daher sind also eigentlich nicht noch mal seperate Variablen notwendig um Latitude und Longitude abzuspeichern.
Ab IP-Symcon 4 kann Latitude und Longitude so ausgelesen werden
function getlocation()
{
//Location auslesen
$LocationID = IPS_GetInstanceListByModuleID("{45E97A63-F870-408A-B259-2933F7EABF74}")[0];
$Latitude = IPS_GetProperty($LocationID, "Latitude");
$Longitude = IPS_GetProperty($LocationID, "Longitude");
$location = array ("Latitude" => $Latitude, "Longitude" => $Longitude);
return $location;
}
$location = getlocation();
$Latitude = $location["Latitude"];
$Longitude = $location["Longitude"];
echo "Latitude: ".$Latitude." Longitude: ".$Longitude;
Danke Wolfgang,
Die DLL Datei muss in welchen pfad ?
Danke,
wolfgang:
Unter W10 und IPS4 ist bei mir das Script mit den Functions auf den Fehler:
gelaufen.
Ursache: die php_com_dotnet.dll fehlt.
Hab die dann von der IPS 3.4 rüber kopiert und ein mal ein IPS-Update laufen lassen. Damit wird dann automatisch die richtige Version der DLL installiert.
Danach hats funktioniert.
Anbei die dll.