Donate. I desperately need donations to survive due to my health

Get paid by answering surveys Click here

Click here to donate

Remote/Work from Home jobs

Access to jagged Array

I have a problem that I'm afraid I can't get on with. Here is a part of my code which should be sufficient to solve the problem.

At the bottom of the public static string[][][][] Read_XML(int CountInOutsInXMLResult) I created a jagged array and want to access the Array_XML_Source and Array_XML_VariableGroup arrays in the main, but unfortunately this doesn't work. How to do this correctly?

    public static string[][][] Read_XML(int CountInOutsInXMLResult)
    {
        string string_xml2 = "";
        string string_xml3 = "";
        string ecatSource = "ecatSource";
        string name = "name";
        string splitstring = "";
        string VariableGroup = "VariableGroup";
        int xml_zeile = 0;
        int variablecolumncounter = 0;
        int variablerowcounter = 0;
        bool inout = false;
        bool variablegroup = false;
        bool wurdebereitshochgezaehlt = false;

        string[][] Array_XML_Source = new string[CountInOutsInXMLResult][];
        string[][] Array_XML_VariableGroup = new string[CountInOutsInXMLResult + 1][];

        //Array_XML_Source initialisieren
        for (int i = 0; i < CountInOutsInXMLResult; i++) //Array_XML_Source initialisieren
        {
            Array_XML_Source[i] = new string[15];

        }

        //Array_XML_VariableGroup initialisieren
        for (int i = 0; i < (CountInOutsInXMLResult + 1); i++)
        {
            Array_XML_VariableGroup[i] = new string[15];
        }

        XmlTextReader readerxml2 = new XmlTextReader("variablegroups.xml");
        while (readerxml2.Read())
        {
            switch (readerxml2.NodeType)
            {
                case XmlNodeType.Element: //Ausführen wenn ein Knotenanfang vorkommt
                    string_xml2 = readerxml2.Name;

                    //Ausführen wenn Variablegroup im Knotenpunkt steht
                    if (string_xml2.Equals(VariableGroup))
                    {
                        variablegroup = true;
                    }
                    break;

                case XmlNodeType.EndElement: //Ausführen wenn ein Knotenende vorkommt
                    string_xml3 = readerxml2.Name;

                    //Ausführen wenn Variablegroup im Knotenpunkt steht
                    if (string_xml3.Equals(VariableGroup))
                    {
                        variablecolumncounter = variablecolumncounter - 1; //Zähle eine Spalte zurück
                    }
                    break;

                case XmlNodeType.Text: //Ausführen wenn Text hinter dem Knoten steht

                    //Ausführen wenn VariableGroup vorkam und nun name im Knoten steht
                    if (string_xml2.Equals(name) && variablegroup)
                    {
                        Array_XML_VariableGroup[variablerowcounter][variablecolumncounter] = readerxml2.Value; //Schreibe den Inhalt vom Knoten name in ein Array
                        variablegroup = false;
                        variablecolumncounter = variablecolumncounter + 1; //Zähle eine Spalte hoch
                        wurdebereitshochgezaehlt = true;
                    }

                    // Ausführen wenn ecatSource im Knoten steht
                    if (string_xml2.Equals(ecatSource))
                    {
                        inout = true;
                    }

                    // Ausführen wenn zuvor Variablegroup im Knoten stand und nun name im Knoten steht oder wenn ecatSource im Knoten steht
                    if ((string_xml2.Equals(ecatSource) || string_xml2.Equals(name) && inout)) // Ausführen wenn ecatSource im Knoten steht
                    {
                        splitstring = readerxml2.Value.Replace(" ", "");//Schreibe den Inhalt des Knotens ecatsource in string_xml

                        if (string_xml2.Equals(ecatSource)) //Ausführen wenn ecatsource im Knoten steht
                        {
                            string[] klemme_xml = splitstring.Split(new[] { '.' }, StringSplitOptions.None);//Splte string_xml bei .
                            int k = 0;
                            for (int j = 0; j < klemme_xml.Length; j++) //Schreibe so viel wie gesplittet wurde in das Array_XML_Source
                            {
                                k = j + 1;
                                Array_XML_Source[xml_zeile][k] = klemme_xml[j];
                            }
                        }
                        else //Ausführen wenn nicht ecatsource im Knoten steht
                        {
                            if (!wurdebereitshochgezaehlt) //nur ausführen wenn wegen variablegroup nicht bereits hochgezählt wurde
                            {
                                variablecolumncounter = variablecolumncounter + 1;
                            }

                            Array_XML_VariableGroup[variablerowcounter][variablecolumncounter] = readerxml2.Value; //Schreibe den Wert in die aktuelle Reihe und Spalte des Arrays
                            Console.Write("{0}  {1} | {2}\n", Array_XML_VariableGroup[variablerowcounter][variablecolumncounter], variablerowcounter, variablecolumncounter);
                            variablerowcounter = variablerowcounter + 1; //Zähle die Reihe eins hoch

                            for (int i = 0; i < variablecolumncounter; i++) //Belegung der Variablengruppen
                            {
                                Array_XML_VariableGroup[variablerowcounter][i] = Array_XML_VariableGroup[variablerowcounter - 1][i]; //Da davor schon eins hoch gezählt wurde hier wieder eins runter zählen
                                Console.Write("{0}  {1} | {2}\n", Array_XML_VariableGroup[variablerowcounter][i], variablerowcounter, i);
                            }
                            Array_XML_Source[xml_zeile][0] = splitstring;
                            xml_zeile += 1; //Zähle die xml_zeile für source um eins hoch
                            inout = false; //setzt inout für ecatsource zurück

                        }
                    }
                    //Array_Name_Path_and_Variables(Array_XML_VariableGroup, 0);//**************
                    break;
            }
        }

        return new[] { Array_XML_Source, Array_XML_VariableGroup};
    }

Comments