Liefert immer das selbe Ergebnis ... 1



  • while (std::getline(CurrentKey,Line))
    {
    	line++;
    	std::string a;
    	a = IntToStr(line);
    	CurrentKey.close();
    	if (Line == NumStr)
    	{
    		break;
    	}
    }
    

    hiermit liest das Programm die Datei mit einem Haufen Zahlen aus, die sieht etwa so aus:

    5
    8
    20
    6
    42
    9
    12
    18
    

    Diese wird vorher ertellt und zwar so:

    void ChangeKey(int Parameter_1,int Parameter_2,bool SystemParam, std::string KName)
    {
    	std::string KeyNumStr;
    	std::string Key = KName;
    	bool Existing = true;
    	int KeyNumber = 0;
    	while (Existing == true)
    	{
    		std::ifstream check;
    		KeyNumber++;
    		Key = KName;
    		std::stringstream convert;
    		convert << KeyNumber;
    		convert >> KeyNumStr;
    		Key = Key.substr(0,Key.size()-7);
    		Key += " ";
    		Key += KeyNumStr;
    		Key += ".CodeX3";
    		check.open(Key.c_str());
    		if (!check)
    		{
    			Keycreate(Key);
    			Existing = false;
    		}
    	}
    	GlobalKeyNum_ = KeyNumStr;	
    }
    void Keycreate(std::string KeyName)
    {
    	// Zufällige Zahlen erzeugen
    //	MessageBox::Show(gcnew String(KeyName.c_str()));
    	std::vector<int> numbers(Parameter_[2]);
        for(size_t i=0;i<numbers.size();++i)
    	{
    		numbers[i] = i+1;
    	}
    	std::random_shuffle( numbers.begin(), numbers.end() );
    
        // Version A, schreibt direkt in die Datei
    
    	std::ofstream SaveKey( KeyName.c_str(), std::ios::out );
    	for (size_t i=0;i<numbers.size();++i )
        {
    		SaveKey << numbers[i] << '\n'; 
    	}
    	SaveKey.close();
    }
    

    die Datei ist garantiert existent, und hoffentlich gefüllt mit Zahlen.
    Aber er geht durch die Schleife immer nur einmal und wirft mir als
    line immer 1 aus.
    (NumStr ist immer unterschiedlich 1,2,3,4,5,...,52)
    Es hat schon mal funktioniert, wenn ich es mir nicht einbilde.

    RechenOperator++;
    		if (Parameter1 != 4 && KeyCreatorSystem == false)
    		{
    			if (RechenOperator == Parameter1)
    			{
    				CurKey = GlobalName_;
    				RechenOperator = 0;
    			}
    			else
    			{
    				if (RechenOperator == 1)
    				{
    					CurKey = GlobalName_;
    				}
    				else if (RechenOperator != 1)
    				{
    					CurKey = GlobalName_;
    					CurKey = CurKey.substr(0,CurKey.size()-7);
    					CurKey += " ";
    					std::stringstream convert;
    					std::string KeyNumStr;
    					convert << (RechenOperator-1);
    					convert >> KeyNumStr;
    					CurKey += KeyNumStr;
    					CurKey += ".CodeX3";
    				}
    			}
    		}
    		else if (KeyCreatorSystem == true && Count_Zeichen != 1)
    		{
    			ChangeKey(Parameter1,Parameter2,true,GlobalName_);
    			CurKey = GlobalName_;
    			CurKey = CurKey.substr(0,CurKey.size()-7);
    			CurKey += " ";
    			CurKey += GlobalKeyNum_;
    			CurKey += ".CodeX3";
    		}
    		else if (KeyCreatorSystem == true && Count_Zeichen == 1)
    		{
    			CurKey = GlobalName_;
    			Keycreate(GlobalName_);
    		}
    

    Zu guter letzt noch das System wann ein key erstellt wird, ich hoffe ihr findet etwas, für mich sieht das nur nach nem üblen Scherzes meines Compilers aus 😃
    Ich such, such such aber finde nix



  • Schau dir mal Zeile 6 in deinem ersten Code an. (4 und 5 machen aber auch wenig Sinn)

    Ansonsten solltest du dir mal etwas zum Thema Call-by-value durchlesen. http://www.gotw.ca/gotw/002.htm



  • WAAAAAAAAAASSSSSS ??? CurrentKey.close(); ??????
    Wie konnte ich nur SOOOOOOOOOOOOOOOOOOOOOOOOOOOOO Blind sein. Das tut weh echt, wenn man daran 2 Stunden sucht 😞 😞 😞
    Sorry den Smiley Spam. SCHREI



  • und IntToStr() hab ich selbst geschrieben.
    Eigentlich benutzt Borland cpp Builder diese Funktion.
    Da ich nicht mit C++ Builder momentan arbeite hab ich mir das selbst gebastelt.
    und ist jetzt wirklich nutzlos, da ichs nicht mehr brauche.

    EDIT: in diesem Fall ist der Zugriff auf eine Datei notwendig, aber es gibt noch eine ander Möglichkeit ohne dateizugriff, die funzt aber noch nicht.


Anmelden zum Antworten