IPS_GetVariableIDByName

Hallo,

ich habe gerade (nach dem Update auf V2.5) brav alle IPS_GetVariableID Befehle gegen IPS_GetVariableIDByName Befehle ausgetauscht. Ich stelle jetzt aber fest, dass IPS_GetVariableIDByName immer nur eine Ebene tiefer als die ParentID sucht. Manchmal muss/will man aber eben über den ganzen Objektbaum suchen und das geht jetzt nicht mehr (würde es tiefer als eine Ebene suchen dann ginge es trotzdem). Gibt es da einen Workaround?

Gruss

gros_ibou


$Var_Name = 'testvar';

$alleObjecte = IPS_GetObjectList();
foreach($alleObjecte as $ID)
{
	//echo $ID."
";
	$VarID = @IPS_GetVariableIDByName($Var_Name, $ID);
	if($VarID === false)
	{

	}
	else
	{
  		echo "Die Variablen-ID lautet: ". $VarID."
";
	}
}

Bitte beachten: Namen können doppelt vorhanden sein, ab IPS V2.5 gibt es die eindeutige Ident Zuordnungsmöglichkeit.

Von der Performance und CPU-Last würde ich mir ganz genau überlegen, ob du das so machen willst, wie Ferengi-Master es vorgeschlagen hat. Eher ob du nicht auf IDs ausweichen kannst :wink:

paresy

Ich habe in br_sonos z.B. einen Fall wo ich schwer auf IDs ausweichen kann oder meinst Du Ident?

Ich hatte generell überlegt von Namen auf Ident zu wechseln, aber die GetObjectIDByIdent ermöglicht es mir lt. Dokumentation auch nur ein Objekt mit einem bestimmten Parent zu finden (Unterkategorien werden nicht durchsucht).

Grüße, Benjamin

Wenn du rekursiv auf 2-3 Ebenen suchst mit nicht gerade 1000 Childobjekten, ist das ja kein allzugroßes Problem…

Den ganzen Baum absuchen, wie hier, ist ein vielfaches davon und das wird dann irgendwann bemerkbar. Darauf wollte ich nur Hinweisen. Hier geht es nur um das foreach. Die Funktion im einzelnen ist kein Problem :slight_smile:

Ident hat gegenüber Name den Vorteil, dass die User den Namen des Objekts verändern können. Von der Performance sind sie gleich.

paresy

Hallo,

danke für die Diskussion. Sehr hilfreich.

Was spricht dagegen IPS_GetVariableIDByName auch in Unterkategorien suchen zu lassen? Durch Angabe der Parent ID würde man dann selber bestimmen wie „gefährlich“ die Suche bzgl Doppelung ist. Parent direkt drüber macht es „ungefährlich“. Wenn man sich bewusst dafür entscheidet eine Parent ID 2-3 Levels drüber zu nehmen, dann wächst natürlich die Gefahr der Doppelung aber das hat man dann ja in der Hand.

Gruss

gros_ibou

Korrekt. Ich wollte nur darauf Hinweisen. :slight_smile:

paresy

Das nächste mal suche ich nicht nach einer Lösung für eine Frage.:rolleyes: Ich habe das auch eher als Suchfunktion betrachtet, nicht als Standardlösung für Scripte und ein Identlösungshinweis gabs auch. (P.S. Die Funktion brauchte bei mir mit 3000 Objekten 140ms) Bitte jetzt nicht falsch verstehen.

Ich versteh paresys Antwort

Korrekt. Ich wollte nur darauf Hinweisen.

auf meine Frage

Was spricht dagegen IPS_GetVariableIDByName auch in Unterkategorien suchen zu lassen? Durch Angabe der Parent ID würde man dann selber bestimmen wie „gefährlich“ die Suche bzgl Doppelung ist.

nicht. Oder war es keine Antwort auf meine Frage :confused:

Gruss

gros_ibou

Die Frage hast Du Dir selber schon beantwortet.