IPS_SetIdent / unendliche viele Variablen

Hi,

kann es sein das wenn man das Ident einer Variable falsch anlegt, das dann die Variabel immer wieder erneut angelegt wird.
Weil, ich hatte fälschlicherweise ein Leerzeichen eingefügt.
Nachdem ich das Leerzeichen heraus genommen habe, war alles gut.

function FN_CreateVariableByIdent($id, $ident, $name, $profile, $type, $xPrintLog)
{
	$vid = @IPS_GetObjectIDByIdent($ident, $id);
	
	if ($xPrintLog)
		print_r("FN_CreateVariableByIdent : VID :" . $vid . " ID :" . $id . " IDENT :" . $ident . " NAME :" . $name . " PROFILE :" . $profile . " TYPE :" . $type . "
");
	
    if($vid === false)
    {
        $vid = IPS_CreateVariable($type);
        IPS_SetParent($vid, $id);
        IPS_SetName($vid, $name);
        IPS_SetIdent($vid, $ident);
        IPS_SetInfo($vid, "this variable was created by script #".$_IPS['SELF']);
        IPS_SetVariableCustomProfile($vid, $profile);
    }
	
    return $vid;
}

So wende ich zumindest die Funktion an.

Gruß

Eine Ident darf keine Umlaute, Sonderzeichen und Leerzeichen enthalten. Wenn Du das nicht beachtest wird auch kein Ident gesetzt. Daher wird die Variable dann neu angelegt, da die alte Variable ja kein Ident hat, Du aber auf ein existierenden Ident prüfst.

Zudem kommt im Fehlerfall eine Warnung bei IPS_SetIdent():

Warning: Ident darf nur Buchstaben und Zahlen enthalten in … on line …:wink:

Ja ich weiß das, das war auch ein Fehler von mir !!!.
Aber wieso wird denn trotzdem die Variable angelegt obwohl der Ident nicht richtig übergeben wird ?

Das verstehe ich nicht. Wenn doch ein Objekt falsch mit Parameter gefüttert wird, sollte auch nichts passieren.

Weil das hier jedesmal ausgeführt wird.
IPS_CreateVariable
Da gibt es noch keinen ident.
Michael

Hi,

ja ok, aber meine Übergabe wäre doch falsch?

Wie falsch… Da gibt es doch noch gar keinen Ident.
Objekte müssen keinen ident haben, ist kein Zwang.
Dann musst du da in deine FN_CreateVariable selber eine Prüfung einbauen.
Michael

achso stimmt ja, ja ok dann Prüfe ich das selber …

Danke …