Ich habe mich mehrere Stunden an dem hier abgebissen, nachdem ich es geschrieben habe, aber ich weiß immer noch nicht, wo der Fehler liegt (HILFE!!!!)

Code:
#UseInterface Web;

Var idx As Integer = 0;
Function parse(t As String) As CHtmlControl
{
  Var text As String = t;
  Var index As Integer = 0;
  Var form As New CHtmlControl();
  Var i As Integer = text.IndexOf("[");
  Var o As Integer;
  While(i >= 0)
  {
    form.Add(text.Substring(0, i));
    o = text.IndexOf("]");
    If(o <= (i - 1))
    {
      form.Add("!!!");
      Return form;
    }
    Var tagname As String = text.Substring(i + 1, (o - i) - 1);
    index = index + o + 1;
    If(tagname.Substring(0, 1) = "/")
    {
      idx = index + idx;
      Return form;
    }
    Var current As New CHtmlControl();
    If(tagname = "b")
    {
      current = New CHtmlBig();
    }
    If(tagname = "red")
    {
      current = New CHtmlSpan();
      current.Style.Add("color", "#ff0000");
    }
    current.Add(parse(text.Substring(index)));
    form.Add(current);
    text = text.Substring(index + idx - 1);
    index = 0;
    i = text.IndexOf("[");
  }
  form.Add(text);
  idx = text.Length - 1;
  Return form;
}

Var form As New CHtmlForm(New CScriptUrl());
form.Add(parse("[b][red]ROT[/][/]"));
Response.Add(form);