Fehler Undefined Offset im Modul

Hallo,

ich habe das Problem eine Funktion in ein Modul zu übernehmen.

Die Funktion sieht wie folgt aus:


$HC1 = "3421"; //HC1 Wert 
$HC2 = "2143"; //HC2 Wert 
$FS20Adresse = "1111"; // Adresse 
//Config End

$FS20_send = Calculate($FS20Adresse, $HC1, $HC2);
Echo $FS20_send;





function Calculate($FS20Adresse, $HC1, $HC2)
	{
		$FS20_Code = $HC1.$HC2.$FS20Adresse;
		$arr1 = str_split($FS20_Code);
		print_r($arr1);
		/* Stelle um 1 reduzieren */
		for ($i = 0; $i <= 11; $i++)
			{
			  $arr1[$i] = $arr1[$i] -1; 
		/* Aufteilung in Zweierblöcke */
		/* Die jeweils erste Zahl eines Blocks wird mit 4 multipliziert und mit der zweiten Zahl addiert */
		for ($i = 0; $i <= 10; $i=$i+2)
			{
			  $arr2[$i] = $arr1[$i] * 4 + $arr1[$i+1];
		   }
		/* Jeder Block wird nun in seine Hexadezimaldarstellung überführt (0-9, A-F) */
		for ($i = 0; $i <= 10; $i=$i+2)
			{
			  $arr2[$i] = dechex($arr2[$i]);
		   }
		$FS20_send = $arr2[0].$arr2[2].$arr2[4].$arr2[6].$arr2[8].$arr2[10];
		return $FS20_send;
	}



Diese Funktion rechnet mir einen Sendecode aus.

Wenn ich nun versuche diese Funktion in ein Modul zu übernehmen in der Form


//Berechnung des FS20 Codes
	public function Calculate()
	{
		$HC1 = $this->ReadPropertyString("HC1");
		$HC2 = $this->ReadPropertyString("HC2");
		$FS20Adresse = $this->ReadPropertyString("Adresse");
		$FS20_Code = $HC1.$HC2.$FS20Adresse;
		$arr1 = str_split($FS20_Code);
		print_r($arr1);
		/* Stelle um 1 reduzieren */
		for ($i = 0; $i <= 11; $i++)
			{
			  $arr1[$i] = $arr1[$i] -1; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!FEHLER undefined Offset
		   }
		/* Aufteilung in Zweierblöcke */
		/* Die jeweils erste Zahl eines Blocks wird mit 4 multipliziert und mit der zweiten Zahl addiert */
		for ($i = 0; $i <= 10; $i=$i+2)
			{
			  $arr2[$i] = $arr1[$i] * 4 + $arr1[$i+1];
		   }
		/* Jeder Block wird nun in seine Hexadezimaldarstellung überführt (0-9, A-F) */
		for ($i = 0; $i <= 10; $i=$i+2)
			{
			  $arr2[$i] = dechex($arr2[$i]);
		   }
		$FS20_send = $arr2[0].$arr2[2].$arr2[4].$arr2[6].$arr2[8].$arr2[10];
		return $FS20_send;
	}

Dann haut es mir die Fehlermeldung undefined Offset um die Ohren da anscheinend etwas mit dem Array nicht stimmt.
Ich weis jetzt aber im ersten Blick nicht was der direkte Grund für den Fehler sein könnte bzw wie dieser zu beheben ist. Hat eventuell einer einen Tipp?

Wahrscheinlich hat deine Variable fs20_code nach dem Zusammenfügen der Bestandteile keine 12 Zeichen.

Speziell für die Berechnung der FS20-Codes gibt es hier aber auch schon Beispiele.

Tommi

Habe den Fehler gefunden, ich hatte ein Aufruf der Funktion innerhalb von ApplyChanges eingebaut. Ich ging davon aus das der Code erst ausgeführt wird nachdem man Übernehmen gedrückt hat. Anscheinend wurde der Code aber schon vorher ausgeführt, was dazu geführt hat, das wenn noch keine Angaben vom Nutzer im Formularfeld gemacht wurden der Array dann leer war. Dies hat dann zu dieser Fehlermeldung geführt. Ich rufe die Funktion jetzt erst später über RequestAction auf jetzt ist der Fehler weg.

ApplyChanges wird u.a. aufgerufen wenn:

[ul]
[li]IPS startet
[/li][li]Eine neue Instanz erzeugt wird (nach Create)
[/li][li]‚Übernehmen‘ in der Konsole ausgeführt wird.
[/li][li]Ein Script diese Funktion ausführt.
[/li][li]…
[/li][/ul]

Michael