Schleife aus einer Schleife.



  • Abend,
    habe eine Frage bezüglich dem starten übergeordneten Schleife aus einer Schleife.
    Habe einen code geschrieben ( mehr c als c++ und die meisten würden es noch nicht mal als code beschreiben ) aber er läuft, macht genau was ich will.
    Ich poste ihn nicht unter andere GUI , QT… weil meine Frage sich auf die QT Elemente abzieht sondern auf das zusammen fassen.
    Im Grunde funktioniert das so.
    Hauptordner wird erstellt
    ( suche nach unterordnern )
    Wenn gefunden
    Erstelle unterordner
    (suche nach unterordnern )
    Wenn gefunden
    Erstelle Unterordner

    Würde das gerne in eine schleife packen , habe es sogar schon mit goto versucht aber ohne Erfolg
    Hauptordner wird erstellt
    hier:
    ( suche nach unterordnern )
    Wenn gefunden
    erstelle unterordner
    Goto hier;

    ...    
             while (!in.atEnd()) {
    				zeile[za] = in.readLine();
    				za++;
    			//daten.close();
             }
    ...
    
    int hauptordner;
    
    int ordner=0;
    for(hauptordner=2;hauptordner<za;hauptordner++){
    	// Hauptordner
    
    qtree[hauptordner] = new QTreeWidgetItem(u.treeWidgetneu);
    qtree[hauptordner] = u.treeWidgetneu->topLevelItem(ordner);
    qtree[hauptordner]->setText(0,zeile[hauptordner].remove(" "));
    ordner++;
    
    	// Suche nach Child
    int kinder=0;
    for(int unterordner=hauptordner+1;unterordner<za;unterordner++){
    marke:
    	if(zeile[unterordner].indexOf("!--")!=-1){
    		 qtree[unterordner-1]->setText(2,zeile[unterordner]);unterordner++;goto marke;}
    
    	if(zeile[unterordner].remove(" ").indexOf("<",3)!=-1){
    		qtree[unterordner] = new QTreeWidgetItem(qtree[hauptordner]);
    		qtree[unterordner] = qtree[hauptordner]->child(kinder);kinder++;
    QString varia=zeile[unterordner].section("/", 0, 0);
    QString altername=zeile[unterordner].section("/", 1, 1);
    		qtree[unterordner]->setText(1,varia.remove(" ").remove(altername).remove("<"));
    		qtree[unterordner]->setText(0,altername.remove(" ").remove(">"));}
    	else{QString miau=zeile[hauptordner];QString miau2=zeile[unterordner];
    	if(miau2.remove("<").remove(">").remove(" ").indexOf("/"+miau.remove("<").remove(">"))!=-1){/*u.textEdit->insertPlainText("Gefunden");*/break;}
    	else{
    		 qtree[unterordner] = new QTreeWidgetItem(qtree[hauptordner]);
    		 qtree[unterordner] = qtree[hauptordner]->child(kinder);kinder++;
    		 qtree[unterordner]->setText(0,zeile[unterordner].remove(" "));
    // Suche nach Child von Child Anfang 
    int kinder2=0;
    
    for(int unterordner2=unterordner+1;unterordner2<za;unterordner2++){
    marke2:
    	if(zeile[unterordner2].remove(" ").indexOf("!--")!=-1){
    		 qtree[unterordner2-1]->setText(2,zeile[unterordner2].remove(" "));unterordner2++;goto marke2;}
    
    	if(zeile[unterordner2].remove(" ").indexOf("<",3)!=-1){
    	//	u.textEdit->setText(zeile[unterordner]);
    		qtree[unterordner2] = new QTreeWidgetItem(qtree[unterordner]);
    		 qtree[unterordner2] = qtree[unterordner]->child(kinder2);kinder2++;
    QString varia2=zeile[unterordner2].section("/", 0, 0);
    QString altername2=zeile[unterordner2].section("/", 1, 1);
    		qtree[unterordner2]->setText(1,varia2.remove(" ").remove(altername2).remove("<"));
    		qtree[unterordner2]->setText(0,altername2.remove(" ").remove(">"));}
    	else{QString miau=zeile[unterordner];QString miau2=zeile[unterordner2];
    	if(miau2.remove("<").remove(">").remove(" ").indexOf("/"+miau.remove("<").remove(">").remove(" "))!=-1){/*u.textEdit->insertPlainText("Gefunden2");*/break;}
    	else{
    		 qtree[unterordner2] = new QTreeWidgetItem(qtree[unterordner]);
    		 qtree[unterordner2] = qtree[unterordner]->child(kinder2);kinder2++;
    		 qtree[unterordner2]->setText(0,zeile[unterordner2].remove(" "));
    
    // Suche nach Child von Child von Child Anfang
    int kinder3=0;
    
    for(int unterordner3=unterordner2+1;unterordner3<za;unterordner3++){
    	//u.textEdit->setText(zeile[unterordner3]);
    marke3:
    		if(zeile[unterordner3].remove(" ").indexOf("!--")!=-1){
    		 qtree[unterordner3-1]->setText(2,zeile[unterordner3].remove(" "));unterordner3++;goto marke3;}	
    
    	if(zeile[unterordner3].remove(" ").indexOf("<",2)!=-1){
    	//	u.textEdit->setText(zeile[unterordner3]);
    
    		qtree[unterordner3] = new QTreeWidgetItem(qtree[unterordner2]);
    		 qtree[unterordner3] = qtree[unterordner2]->child(kinder3);kinder3++;
    QString varia3=zeile[unterordner3].section("/", 0, 0);
    QString altername3=zeile[unterordner3].section("/", 1, 1);
    		qtree[unterordner3]->setText(1,varia3.remove(" ").remove(altername3).remove("<"));
    		qtree[unterordner3]->setText(0,altername3.remove(" ").remove(">"));}
    	else{QString miau=zeile[unterordner2];QString miau2=zeile[unterordner3];
    	if(miau2.remove("<").remove(">").remove(" ").indexOf("/"+miau.remove("<").remove(">").remove(" "))!=-1){/*u.textEdit->insertPlainText("Gefunden3");*/break;}
    	else{
    		 qtree[unterordner3] = new QTreeWidgetItem(qtree[unterordner2]);
    		 qtree[unterordner3] = qtree[unterordner2]->child(kinder3);kinder3++;
    		 qtree[unterordner3]->setText(0,zeile[unterordner3].remove(" "));
    
    // Suche nach Child von Child von Child von Child Anfang
    int kinder4=0;
    
    for(int unterordner4=unterordner3+1;unterordner4<za;unterordner4++){
    	//u.textEdit->setText(zeile[unterordner4]);
    marke4:
    		if(zeile[unterordner4].remove(" ").indexOf("!--")!=-1){
    		 qtree[unterordner4-1]->setText(2,zeile[unterordner4].remove(" "));unterordner4++;goto marke4;}	
    
    	if(zeile[unterordner4].remove(" ").indexOf("<",2)!=-1){
    	//	u.textEdit->setText(zeile[unterordner4]);
    
    		qtree[unterordner4] = new QTreeWidgetItem(qtree[unterordner3]);
    		 qtree[unterordner4] = qtree[unterordner3]->child(kinder4);kinder4++;
    QString varia4=zeile[unterordner4].section("/", 0, 0);
    QString altername4=zeile[unterordner4].section("/", 1, 1);
    		qtree[unterordner4]->setText(1,varia4.remove(" ").remove(altername4).remove("<"));
    		qtree[unterordner4]->setText(0,altername4.remove(" ").remove(">"));}
    	else{QString miau=zeile[unterordner3];QString miau3=zeile[unterordner4];
    	if(miau3.remove("<").remove(">").remove(" ").indexOf("/"+miau.remove("<").remove(">").remove(" "))!=-1){/*u.textEdit->insertPlainText("Gefunden3");*/break;}
    	else{
    		 qtree[unterordner4] = new QTreeWidgetItem(qtree[unterordner3]);
    		 qtree[unterordner4] = qtree[unterordner3]->child(kinder4);kinder4++;
    		 qtree[unterordner4]->setText(0,zeile[unterordner4].remove(" "));
    
    	}}}unterordner3=unterordner4;
    // Suche nach Child von Child von Child von Child Ende
    
    	}}}unterordner2=unterordner3;
    // Suche nach Child von Child von Child Ende
    
    	}}}unterordner=unterordner2;
    // Suche nach Child von Child Ende
    
    	}}}hauptordner=unterordner; 
    }
    


  • goto solltest du nur in äußersten Notfällen verwenden - und für so eine Schleife kannst du auch eine normale Schleife verwenden:

    while(suche_unterordner())
    {
      erstelle_daten();
    }
    

    (Pseudocode - ich hatte jetzt nicht wirklich Lust, mich durch deinen Code-Wust zu wühlen)



  • entschuldige bitte das es so unübersichtlich ist. Es sind beides genau der selbe code der aber aus sich heraus entsteht. Mir ist dein Beispiel leider noch nicht ganz klar

    im Grund soll es so gehen

    // Suche nach Child
    int kinder=0;
    for(int unterordner=hauptordner+1;unterordner<za;unterordner++){
    marke:
    	if(zeile[unterordner].indexOf("!--")!=-1){
    		 qtree[unterordner-1]->setText(2,zeile[unterordner]);unterordner++;goto marke;}
    
    	if(zeile[unterordner].remove(" ").indexOf("<",3)!=-1){
    		qtree[unterordner] = new QTreeWidgetItem(qtree[hauptordner]);
    		qtree[unterordner] = qtree[hauptordner]->child(kinder);kinder++;
    QString varia=zeile[unterordner].section("/", 0, 0);
    QString altername=zeile[unterordner].section("/", 1, 1);
    		qtree[unterordner]->setText(1,varia.remove(" ").remove(altername).remove("<"));
    		qtree[unterordner]->setText(0,altername.remove(" ").remove(">"));}
    	else{QString miau=zeile[hauptordner];QString miau2=zeile[unterordner];
    	if(miau2.remove("<").remove(">").remove(" ").indexOf("/"+miau.remove("<").remove(">"))!=-1){/*u.textEdit->insertPlainText("Gefunden");*/break;}
    	else{
    		 qtree[unterordner] = new QTreeWidgetItem(qtree[hauptordner]);
    		 qtree[unterordner] = qtree[hauptordner]->child(kinder);kinder++;
    		 qtree[unterordner]->setText(0,zeile[unterordner].remove(" "));
    
    AB HIER SUCHE EBENE TIEFER:
    
    	}}}hauptordner=unterordner; 
    }
    

    der CODE für die EBENE TIEFER:

    // Suche nach Child von Child Anfang 
    int kinder2=0;
    
    for(int unterordner2=unterordner+1;unterordner2<za;unterordner2++){
    marke2:
    	if(zeile[unterordner2].remove(" ").indexOf("!--")!=-1){
    		 qtree[unterordner2-1]->setText(2,zeile[unterordner2].remove(" "));unterordner2++;goto marke2;}
    
    	if(zeile[unterordner2].remove(" ").indexOf("<",3)!=-1){
    	//	u.textEdit->setText(zeile[unterordner]);
    		qtree[unterordner2] = new QTreeWidgetItem(qtree[unterordner]);
    		 qtree[unterordner2] = qtree[unterordner]->child(kinder2);kinder2++;
    QString varia2=zeile[unterordner2].section("/", 0, 0);
    QString altername2=zeile[unterordner2].section("/", 1, 1);
    		qtree[unterordner2]->setText(1,varia2.remove(" ").remove(altername2).remove("<"));
    		qtree[unterordner2]->setText(0,altername2.remove(" ").remove(">"));}
    	else{QString miau=zeile[unterordner];QString miau2=zeile[unterordner2];
    	if(miau2.remove("<").remove(">").remove(" ").indexOf("/"+miau.remove("<").remove(">").remove(" "))!=-1){/*u.textEdit->insertPlainText("Gefunden2");*/break;}
    	else{
    		 qtree[unterordner2] = new QTreeWidgetItem(qtree[unterordner]);
    		 qtree[unterordner2] = qtree[unterordner]->child(kinder2);kinder2++;
    		 qtree[unterordner2]->setText(0,zeile[unterordner2].remove(" "));
    
    	}}}unterordner=unterordner2;
    // Suche nach Child von Child Ende
    


  • Habe einen code geschrieben ( mehr c als c++ und die meisten würden es noch nicht mal als code beschreiben ) aber er läuft, macht genau was ich will.
    Ich poste ihn nicht unter andere GUI , QT… weil meine Frage sich auf die QT Elemente abzieht sondern auf das zusammen fassen.

    Mit C++/CLI hats trotzdem nichts zu tun. Wenn, dann mit C++.
    ➡ Falsches Forum


Log in to reply