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.