-
Gesamte Inhalte
91 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Artery
-
Ich hab nochmal eine Frage, wie kann ich mit fgets bis zu einem bestimmten Zeichen auslesen?? Ich hatte es jetzt so: fgets(Texte[0],';',SprachausgabeVTOS); doch dann liest er mir so viele Zeichen ein wie das semikolon als Ascii wert hat :/ Also in dem Fall 59... Ich will aber das er bis zum Semikolon liest mit fgets, wie krieg ich das hin? MfG Artery €dit: Bzw. wenn das nicht geht, welche Funktion könnte ich stattdessen verweden??
-
Ahh.... habs gefunden Ich hatte es an einer Stelle doch nicht geschlossen Bei so vielen Verzweigungen kann man schonmal was übersehen jedenfalls dann danke für die Info mit dem remove befehl! MfG Artery
-
Wenns nicht funktoniert (das Löschen) dann wird die Datei wohl noch da sein... Hälts du mich für dumm?? Das es am Programm liegt ist mir schon klar.. Mmmmm.... Das versteh ich jetzt nicht ganz. Also es ist ne Konsolenanwendung. Was sagen mir diese Dinger aus, bzw. wie komm ich da ran??
-
Hi leute, ich hab versucht eine Datei mit DeleteFile(TEXT("Profile.VTPro")); zu löschen, das Funktioniert aber ihrgendwie nicht immer :/ Wenn ich noch nicht auf die Datei zugegriffen habe, wird sie gelöscht, aber wenn ich einmal auf sie zugegriffen habe, wird sie mit diesem Befehl nicht mehr gelöscht. Woran liegt das? Die Datei ist auch wieder geschlossen, und ich habe die Funktion auch verlassen, in der die Datei aufgerufen wird, das heißt ja das auch alle varibalen z.B. der Zeiger auf die Datei und so gelöscht wurden. Also kanns daran nicht liegen! Woran liegts nun?? MfG Artery
-
Ich weiß jetzt woran es liegt, und zwar daran if(ButtonCrsLoc == 0) { Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder("Öffnet das Optionenmenü! (enter)", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, NULL, NULL, 0, true); } else if(Profile[ButtonCrsLoc-1].Profil_Name[0] == '<') { Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder("Dieses Profil ist leer, Sie können ein neues erstellen, drücken Sie dazu 'e'", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); VoidProfil = true; } else if(Profile[ButtonCrsLoc-1].Profil_Name != "<LEER>") { sprintf(ProfilText, "Dies ist das Profil von: %s , Sie können dieses nun löschen 'd', editieren 'e' oder betreten mit 'enter'",Profile[ButtonCrsLoc-1].Profil_Name); Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder(ProfilText, ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); VoidProfil = false; } Deswegen hängt er, denn hinter Text_Builder(ProfilText, ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); versteckt sich ne etwas umfangreiche funktion und die ist der Grund dafür :/ Die Funktion: void Text_Builder(char Text[], ic::TextColor color, int X10, int X01, int X20, int X02, int Y10, int Y01,int YE10, int YE01, int sleeptime, bool Button) // Die Funktion gibt einen Text an der angegeben Stelle aus und unterteilt ihn "intelligent" in Zeilen. Die Funktion "erstellt" Rechtecke mit den gewünschten Eckdaten. Übergeben wird: Der Text, sowie die Textfarbe. X-Anfangs-, X-End, Y-Anfangswertw als 'Brüche' übergeben, z.b. X10 und X01 ergeben 2/12, das ist der Anfangswert und der Bruch aus X20, X02 ist der Bruch für den Endwert, ggf. werden auch die Y-Endwerte als Bruch übergeben. Dann wird noch die sleeptime übergeben, d.h. wie lang pause zwischen den Einzelnenzeichen gesetzt soll. Und auch ob es sich um einen Button handelt, da dann eine kleine Änderung an dem Y-Wert vorgenommen werden muss. { if(YE10 != NULL && YE01 != NULL) //Sollte YE10, sowie YE01 gleich "NULL" sein, das bedeutet, der Text ist nur eine Zeile lang, springt das Programm in das else, wenn beide einen Wert haben, also der Text länger als eine Zeile ist, geht es in der If-Bedingung weiter { int Textrestlen = strlen(Text); int Zeilen = 1; // Steht von Anfang an auf 1, da sowieso mindestens eine Zeile gebraucht wird int iadd; int k = 0; int counter2 = 0; int counter = 0; int* Zeileninhalt = NULL; //Zeiger (Adresse) für späteres dynamisches Array sichern int* Zeilenreduce = NULL; while(Textrestlen >= ((DEF_WNDSIZEX * X10/X01) - (DEF_WNDSIZEX *X20/X02)) *(-1)) // Rechnet die Anzahl der benötigten Zeilen, sowie die Textrestlänge (Wie viele Zeichen in eine neue, nicht komplett befüllte Zeile kommen) { Textrestlen = Textrestlen - ((DEF_WNDSIZEX * X10/X01) - (DEF_WNDSIZEX *X20/X02)) *(-1); Zeilen++; } Zeileninhalt = new int [Zeilen]; //Anlegen eines dynamischen Arrays Zeilenreduce = new int [Zeilen]; counter2 = ((DEF_WNDSIZEX * X10/X01) - (DEF_WNDSIZEX *X20/X02)) *(-1); for(int i = 1; i <= Zeilen;i++) // Berechnung der Anzahl der Zeichen in einer Zeile { if((counter + ((DEF_WNDSIZEX * X10/X01) - (DEF_WNDSIZEX *X20/X02)) *(-1)) <= strlen(Text)) { for(int j = counter2; ;j--) { if(Text[j] == 32 || Text[j] == 44 || Text[j] == 46 || Text[j] == 33) // Bei Punkten, Kommata, Ausrufezeichen und Leerzeichen, kann ein Zeilenumbruch entstehen { Zeileninhalt[k] = j - counter; Zeilenreduce[k] = j - counter; counter = j; counter2 = j + ((DEF_WNDSIZEX * X10/X01) - (DEF_WNDSIZEX *X20/X02)) *(-1); k++; break; } } } else { Zeileninhalt[k] = strlen(Text) - counter; Zeilenreduce[k] = strlen(Text) - counter; } } counter = 0; k = 0; ic::con.setTextColor(color); // Setzt die Textfarbe auf die Übergebene for(int i = 0; i <= Zeilen ; i++) // Rechnet iadd aus und "springt" sozusagen in die nächste Zeile { iadd = ( ((DEF_WNDSIZEX * X10/X01) - (DEF_WNDSIZEX *X20/X02)) - (Zeileninhalt[i]+1)); // In "iadd" steht die Größe des Abstandes zu den Rändern um den Text zu zentrieren (Ist der Abstand ungerade entsteht hier eine kleine ungenauigkeit!) if(iadd % 2 == 0) { iadd = iadd /2; } else { iadd= (iadd -1) /2; } if(i != 0) { counter = counter + Zeileninhalt[k]; k++; } for(int j = DEF_WNDSIZEX * X20/X02 + 1 + iadd; j <= DEF_WNDSIZEX * X10/X01 - iadd; j++) // Gibt den Text aus { if(Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == ' ' && j == DEF_WNDSIZEX * X20/X02 + 1 + iadd) // Sollte das Erste Zeichen der neuen Zeile ein Leerzeichen sein, wird es weggelassen { j++; Zeilenreduce[k]--; } if(Zeilenreduce[k] == 0 && Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == ' ' ) //Ist das letzte Zeichen einer Zeile ein Leerzeichen wird es weggelassen { break; } ic::con.setCurPos (j, DEF_WNDSIZEY * (Y10+k)/Y01 + 1); if(Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == 'ö') // Umlaute werden korrekt umgewandelt { std::cout << char(148); } if(Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == 'ü') { std::cout << char(129); } if(Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == 'ä') { std::cout << char(132); } if(Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == 'ß') { std::cout << char(225); } if(Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == 'Ö') { std::cout << char(153); } if(Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == 'Ä') { std::cout << char(142); } if(Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)] == 'Ü') { std::cout << char(154); } else { std::cout << Text[(Zeileninhalt[k]-Zeilenreduce[k]+counter)]; } Zeilenreduce[k]--; Sleep(sleeptime); } } delete[] Zeileninhalt; // Speicherplatz wiederfreigeben um Memory leaks zu vermeiden delete[] Zeilenreduce; Zeileninhalt = NULL; Zeilenreduce = NULL; } else { int k=0; int iadd; ic::con.setTextColor(color); // Setzt die Textfarbe auf die übergebene Farbe iadd = ( (DEF_WNDSIZEX * X10/X01) - (DEF_WNDSIZEX *X20/X02) - strlen(Text)) / 2; // In "iadd" steht die Größe des Abstandes zu den Rändern um den Text zu zentrieren (Ist der Abstand ungerade entsteht hier eine kleine ungenauigkeit!) for(int i = DEF_WNDSIZEX * X20/X02 + 1 + iadd; i <= DEF_WNDSIZEX * X10/X01 - iadd; i++) // Gibt den Text aus { if(Button == true) // Da die Texte für "Buttons" nicht zentriert sind, und die in normalen Fenster es schon seien sollen, muss hier nochmal extra abgefragt werden, um was es sich handelt { ic::con.setCurPos (i, DEF_WNDSIZEY * Y10/Y01 + 1); } else { ic::con.setCurPos (i, DEF_WNDSIZEY * Y10/Y01); } if(k == (strlen(Text))) { break; } if(Text[k] == 'ö') // Umlaute werden korrekt umgewandelt { std::cout << char(148); } if(Text[k] == 'ü') { std::cout << char(129); } if(Text[k] == 'ä') { std::cout << char(132); } if(Text[k] == 'ß') { std::cout << char(225); } if(Text[k] == 'Ö') { std::cout << char(153); } if(Text[k] == 'Ä') { std::cout << char(142); } if(Text[k] == 'Ü') { std::cout << char(154); } else { std::cout << Text[k]; } k++; Sleep(sleeptime); } } } Wäre schön wenn ihr nochmal drüber guckt, vielleicht krieg ich die Funktion noch so angepasst das es klappt :/ MfG Artery
-
Timer? Wo meinst du genau? Die einzigsten Befehle mit sleep > 0 werden nur dann ausgeführt, wenn man sich sowieso gerade nicht mit den Pfeiltasten bewegen kann..
-
Der code ist deswegen unwichtig, weil er nur greift, wenn andere Tasten gedrückt werden deswegen hab ich das weggelassen, weil es nicht eintritt! Aber ich kann gerne den ganzen code posten wenn du willst: while(1) { while(_kbhit()== 0) // Die Schleife greift, wenn eine Taste gedrückt wurde { i = 0; sprintf(Profilnameraw,"<<<<<<<<<<<<<<<"); tmp = _getch(); // Das erste Zeichen des Puffer wird genommen und in tmp geschrieben if(tmp == 27) // Wird escape gedrückt, wird das Programm sofort beendet { exit(1); } if(_kbhit() == 1) // Sollte immer noch eine Taste gedrückt sein, das heißt, das entweder Sie noch ein Vorzeichen hat, oder mehrere Tasten gedrückt wurden, springt er in die If-Abfrage { if(tmp != -32) // Wenn es sich nicht um das Vorzeichen -32 handelt soll er die While-Schleife ausführen { while(_kbhit() == 1) // Die While-Schleife leert den Puffer bis keine Eingabe mehr vorhanden ist { _getch(); } } } if(ButtonCrsLoc == 0 && tmp == 13) { Optionen_Menü_main(); } else if(VoidProfil == true && tmp == 'e') // Wenn der 'Cursor' gerade auf einem leeres Profil zeigt, und 'e' gedrückt wurde, dann wird in das if gesprugen { Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder("Bitte geben Sie den Namen des Profils ein und bestätigen Sie ihre Eingabe mit Enter. Der Name darf nicht die Zeichen '<' und '>' beinhalten und darf nur 15 Zeichen lang sein!", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder(" ", ic::FG_LIGHTBLUE,5,12, 7,12,YWert[ButtonCrsLoc],24, NULL, NULL, 30, true); SetCursor(5,12,0,YWert[ButtonCrsLoc],24,true,true); Profil_Menü_Button_Namen_ändern(YWert,ButtonCrsLoc,edit_tmp,i,i2,Profile,Profilnameraw,VoidProfil,ProfilText); } else if(VoidProfil == false && tmp == 'e' || VoidProfil == false && tmp == 'd' || VoidProfil == false && tmp == 13) { if(tmp == 'd') { while(_kbhit() == 1) // Der Puffer wird geleert { _getch(); } Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder("Möchten Sie wirklich dieses Profil löschen? Zum bestätigen drücken Sie 'enter', wenn nicht 'escape'!", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); while(_kbhit() == 0) { edit_tmp = _getch(); while(_kbhit() == 1) { _getch(); } if(edit_tmp == 27) { sprintf(ProfilText, "Dies ist das Profil von: %s , Sie können dieses nun löschen 'd', editieren 'e' oder betreten mit 'enter'",Profile[ButtonCrsLoc-1].Profil_Name); Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder(ProfilText, ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); break; } else if(edit_tmp == 13) { i = 0; while(i != 15) { Profile[(ButtonCrsLoc-1)].Profil_Name[i] = '\0'; i++; } sprintf(Profile[(ButtonCrsLoc-1)].Profil_Name, "<LEER>"); ProfileVTPro = fopen("Profile.VTPro", "wb"); fwrite(Profile,sizeof(struct ProfilStruct),6,ProfileVTPro); fclose(ProfileVTPro); SetCursor(5,12,0,YWert[ButtonCrsLoc],24,false,true); std::cout << " "; Text_Builder(" ", ic::FG_LIGHTBLUE,5,12, 7,12,YWert[ButtonCrsLoc],24, NULL, NULL, 30, true); Text_Builder(Profile[(ButtonCrsLoc-1)].Profil_Name, ic::FG_LIGHTBLUE,5,12,7,12,YWert[ButtonCrsLoc],24, NULL, NULL, 30, true); Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder("Dieses Profil ist leer, Sie können ein neues erstellen, drücken Sie dazu 'e'", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); VoidProfil = true; break; } } } else if(tmp == 'e') { Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder("Bitte geben Sie den Namen des Profils ein und bestätigen Sie ihre Eingabe mit Enter. Der Name darf nicht die Zeichen '<' und '>' beinhalten und darf nur 15 Zeichen lang sein!", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder(" ", ic::FG_LIGHTBLUE,5,12, 7,12,YWert[ButtonCrsLoc],24, NULL, NULL, 30, true); SetCursor(5,12,0,YWert[ButtonCrsLoc],24,true,true); Profil_Menü_Button_Namen_ändern(YWert,ButtonCrsLoc,edit_tmp,i,i2,Profile,Profilnameraw,VoidProfil,ProfilText); } else if(tmp == 13) { exit(1); } } else if(tmp == -32) // Wenn eine Taste mit dem Vorzeichen -32 , z.B. eine Pfeiltaste, springt er in das else if { tmp2 = _getch(); if(tmp == -32 && tmp2 == 72 || tmp == -32 && tmp2 == 80) { tmp = tmp2; if(tmp == 80) { if(ButtonCrsLoc == 6) { ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0); ButtonCrsLoc = 0; ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0); } else { ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0); ButtonCrsLoc = ButtonCrsLoc + 1; ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0); } } if(tmp == 72) { if(ButtonCrsLoc == 0) { ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0); ButtonCrsLoc = 6; ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0); } else { ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0); ButtonCrsLoc = ButtonCrsLoc - 1; ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0); } } if(ButtonCrsLoc == 0) { Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder("Öffnet das Optionenmenü! (enter)", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, NULL, NULL, 0, true); } else if(Profile[ButtonCrsLoc-1].Profil_Name[0] == '<') { Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder("Dieses Profil ist leer, Sie können ein neues erstellen, drücken Sie dazu 'e'", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); VoidProfil = true; } else if(Profile[ButtonCrsLoc-1].Profil_Name != "<LEER>") { sprintf(ProfilText, "Dies ist das Profil von: %s , Sie können dieses nun löschen 'd', editieren 'e' oder betreten mit 'enter'",Profile[ButtonCrsLoc-1].Profil_Name); Text_Builder(" ", ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); Text_Builder(ProfilText, ic::FG_LIGHTBLUE, 3, 12, 9, 12, 1, 24, 5, 24, 0, false); VoidProfil = false; } } } } } So das ist die gesamte Schleife... Ich hoffe ihr könnt damit was anfangen! MfG Artery
-
Wenn jetzt jemand 2 oder mehr tastengleichzeitig drückt kam es zu problemen, damit werden einfach alle anderen Tasten aus dem inbuffer genommen. was evt noch von interesse wäre ist das: So ungefähr sieht die Schleife aus, das unwichtige hab ich rausgelassen while(1) { while(_kbhit()== 0) { tmp = _getch(); if(_kbhit() == 1) { if(tmp != -32) { while(_kbhit() == 1) { _getch(); } } } if() { ....... } else if(tmp == -32) { tmp2 = _getch(); if(tmp == -32 && tmp2 == 72 || tmp == -32 && tmp2 == 80) { } } Edit: was mir noch einfällt er springt immer in eine Funktion in einer anderen Quelldatei, wenn die Pfeiltasten gedrückt wurden, könnte es ein das ert deswegen iwann hängt?
-
Ich habe es schon implementiert, das man sich mit den Pfeiltasten bewegen kann, das ist ja nicht das Problem Sondern wenn ich jetzt z.b "Pfeiltaste nach unten" gedrückt halte, macht er noch kurz so weiter wie er sollte und ihrgendwann harkt er dann und macht nichts mehr!
-
hi, wie frage ich ab ob eine taste gedrückt gehalten wird? Ich hab eine Schleife mit while(_kbhit()== 0) wenn jetzt jemand eine taste gedrückt hält bekomme ich probleme und es passiert nichts mehr in der Schleife kommt erstmal folgendes: tmp = _getch(); if(_kbhit() == 1) { if(tmp != -32) { while(_kbhit() == 1) { _getch(); } } } das sorgt nur dafür, das wenn andere Tasten gleichzeitig gedrückt werden, diese sozusagen ignoriert werden, im rest der Schleife sind nur noch if-abfragen... Zusagen ist noch, das man sich nur mit den Pfeiltasten nach oben und unten bewegen kann! Woran liegt das jetzt das dann nichts mehr passiert, er scheint dann zu hängen, da er nicht mehr auf Eingaben reagiert, wie kann ich das jetzt beheben?? MfG Artery
-
okay habs gelöst , einfach ein _getch(); wenn der in die if bedingung springt und alles läuft sogut wie wunderbar
-
So hab nochmal was ausprobiert, ist etwas übersichtlicher: while(_kbhit() == 0) { cout << "1"; tmp = _getch(); if(_kbhit() == 1) { cout << "Seems good"; fflush(stdin); } if(tmp == 109) { cout << tmp; } } Wenn ich jetzt 2 tasten gleichzeitig drücke springt der in die Erste if abfrage rein gibt "Seems Good" aus, danach springt er aus der while-schleife, und wenn ich weitere while Schleife folgen lassen ungefähr so: while(_kbhit() == 0) { cout << "1"; tmp = _getch(); if(_kbhit() == 1) { cout << "Seems good"; bug = true; fflush(stdin); } if(tmp == 109) { cout << tmp; } } while(_kbhit() == 0) { cout << "2"; tmp = _getch(); if(_kbhit() == 1) { cout << "Seems good"; fflush(stdin); } if(tmp == 109) { cout << tmp; } } übergeht er die zweite schleife und macht mit den folgenden Befehlen weiter! Wenn ich z.b. eine der Schleifen in while(1)schleifen packe führt er alles in der schleife aus, ausser die Schleife mit _kbhit()... Das heißt im Endeffekt, das beim gleichzeitigen Drücken zweier Tasten, das Event _kbhit() ständig true bleibt. Ich habe bisher nur eine Möglichkeit gefunden das zu unterbinden, und zwar mit einer Eingabeaufforderung wie cin. Nur das Problem ist, das ich nicht immer wenn jemand 2 tasten drückt ne Eingabe fordern kann... Wie kann ich _kbhit() wieder auf false setzte ohne eingabe?? Bzw. woran liegts das es true bleibt? MfG Artery PS: Das ist echt wichtig das ich das löse :/
-
Ernsthaft wieso gibts keine Editfunktion mehr?? Habs jetzt gelöst und zwar ist das Zeichen -32 nicht 0 :/ habs rausgefunden habe in dem ich mir einfach mal den Wert angeguckt habe der beim Erstenmal in tmp stand =) Nur eine Frage wenn ich 2 tasten aufeinmal drücke funktionierts nicht mehr voran liegt das? Bzw. wie kann ich das fixen? Edit: Wieso kann ich den Beitrag editieren die anderen nicht?? while(1) { while(_kbhit()== 0) { char tmp = _getch(); if(tmp == -32) { char tmp2 = _getch(); if(tmp == -32 && tmp2 == 72 || tmp == -32 && tmp2 == 80) { tmp = tmp2; if(tmp == 80) { if(ButtonCrsLoc == 6) { ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0); ButtonCrsLoc = 0; ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0); } else { ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0); ButtonCrsLoc = ButtonCrsLoc + 1; ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0); } break; } if(tmp == 72) { if(ButtonCrsLoc == 0) { ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0); ButtonCrsLoc = 6; ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0); } else { ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,true,0); ButtonCrsLoc = ButtonCrsLoc - 1; ArrowBuilder(3,12,YWert[ButtonCrsLoc],24,false,0); } break; } } } } }
-
Das nervt iwie wenn man den Startbeitrag nicht editieren kann :/ Es würde auch reichen, wenn mir jemand sagt wie ich Abfrage ob der Tastaturpuffer leer ist
-
Hallo leute, Wenn ich hab etwas geschrieben in dem die Pfeiltasten abgepfragt werden und dann etwas passiert, ich weiß das Pfeiltasten keinen direkt eigenen Ascii code haben sondern, aus 2 zeichen bestehen. laut dieser Website: Datasource :: Programmierung :: Tastaturcodes unter DOS wäre das 0 - 80 für Pfeil nach unten. Es ist kein Problem wenn ich jetzt ein doppeltes _getch(); mache und dann abfrage obs z.b. 80 ist, nur wenn man jetzt eine andere Taste drückt, nimmt er das Zeichen z.b. 109 für 'm' dann ist beim 2ten getch nichts mehr im puffer! Jetzt wollte ich sozusagen beim ersten Zeichenabfragen, also ob dies nun das Vorzeichen der Pfeil tasten ist oder nicht, nur jetzt habe ich das Problem das es anscheinend nicht 0 ist welches Zeichen ist es denn nun? Also wenn ich jetzt hab char tmp = _getch(); if(tmp == ??) was muss da jetzt hin? mit 0 geht es nicht... MfG Artery
-
Schön das ihr euch alle hier so rege darüber streitet... Damit das hier (jedenfalls für diesen Thread beendet ist) ich lerne in der schule eigentlich C doch ich benutze aber lieber c++, worauf ich mich auf nur ein paar einfache dinge wie cin cout statt printf scanf und sowas beziehen! Ich brauch das für ein Projekt, da ich aber gemerkt, das ist besser ist wenn ich das mit dem Dateihandling jetzt lieber in c schreibe, WEIL wir das in der Schule bisher nur in C gemacht haben, da hab ich dann wenigstens alle Befehle auf Papier und meine Zeit reicht jetzt nicht aus mich da komplett reinzufuchsen, desweiteren müsste ich dann auch bei anderen dingen ständig wieder nachfragen!! Ich kann wenn ihr wollt dann nachher noch meine Lösung posten... MfG Artery
-
Ich arbeite noch nicht Objektorientiert, benutze aber dennoch c++, da dieses vom handling um einiges einfacher ist als c... Aber ich glaub ich hab mein Problem gelöst, morgen muss ich es nochmal testen dann geb ich nochmal bescheid! MfG Artery
-
Ich verstehe das nicht ganz mit dem Vector und ich benutze lieber im moment char arrays! Da ich da selber dann besser durch blicke. Ich möchte eig jetzt nur eine Lösung um das ganze mit 2D arrays zu realisieren mehr nicht BITTE!
-
Also, ich arbeite deswegen mit char arrays, weil ich z.b. mir eine funktion geschrieben habe, die ein char array zentriert ausgibt! Deswegen brauche ich auch hier char arrays! Ich hatte jetzt probiert, erstmal das ganze in ein Char array zu packen und dann mit ner while-schleife auseinander pflücken... €dit: Hab das von eben mal gelöscht, also ich kriege es jetzt hin mit datei.getline(Profile_raw,sizeof(Profile_raw),';'); Bis zum semikolon einzulesen, jetzt möchte ich aber nicht 6 mal das untereinander und auch noch 6 verschiedene variablen benutzen, wie kann ich das jetzt mit 2 dimensionalen char arrays realisieren?? MfG Artery
-
ich habe noch nie was von std::vector gehört, dann wäre es sehr schön wenn du mir bitte einbeispielt gibts
-
ja ich benutze nur char arrays, das wird das iwie etwas schwieriger :/ benutze fstream und hatte auch das mit getline schon probiert... Wie mache ich es denn genau wenn ich jetzt zweidimesionale char arrays habe? In die erste dimension soll immer der Inhalt bis zum semikolon. Wenn das semikolon kommt soll er in der zweiten dimension eins weiter springen und dann das ganze wieder zum nächsten semikolon!
-
Hey leute ich habe ein Problem. Also ich möchte aus einer Textdatei lesen, und den inhalt in eine varibale speichern, bis ein ";" kommt, dann soll er fortfahren bis zum nächsten ";" usw... bis das Ende der Datei erreicht wurde... Wie kann ich das nun realisieren? hab als rumprobiert aber das klappt als nicht Könntet ihr mir bitte weiterhelfen?!? MfG Artery
-
Jo daran lags Hatte, einmal nen test gemacht, indem die Schleife ständig durchlief. Nur ich hatte davon irritieren lassen, das er meinte "Zugriffsverletzung" anstatt array overloaded oder so :/ Tortzdem danke!
-
Hey leute, habe nen echt doofe Problem, welches ich nicht verstehe :/ und zwar meint das Programm folgendes: Unbehandelte Ausnahme bei 0x008d803b in TW-Projekt Vokabeltrainer.exe: 0xC0000005: Zugriffsverletzung beim Schreiben an Position 0x01e35000. und zwar wird sich auf folgende Zeile bezogen: Zeileninhalt[k] = j; while(1) { if((counter + ((windowsize("X") * X10/X01) - (windowsize("X") *X20/X02) + 2) *(-1)) <= strlen(Text)) { for(int j = strlen(Text) - Zeilenedit * ((windowsize("X") * X10/X01) - (windowsize("X") *X20/X02) + 2) *(-1) - Textstrlen - rest;;j--) { if(Text[j] == 32 || Text[j] == 44 || Text[j] == 46 || Text[j] == 33) { Zeileninhalt[k] = j; counter = j; counter2 = counter + 46; k++; break; } rest++; } } else { Zeileninhalt[k] = strlen(Text) - counter; } } Deklariert wird Zeileninhalt hier: int* Zeileninhalt = NULL; Zeileninhalt = new int [YE10-Y10+1]; es ist auch kein Problem vorher was in Zeileninhalt[k] zu schreiben und auch bei einer anderen version der Schleife hat es schon funktioniert, nur wieso geht es jetzt auf einmal nicht mehr?? Ich hoffe ihr könnt mir helfen, da es vorher ging und jetzt auf einmal nicht mehr :'( Ich habe im Vergleich zu vorher nur den Aufbau der Schleife geändert... MfG Artery
-
Also ersten sry ich bin zu doof, sehe kein editier button =( Durch einen Zufall hat sich das Problem erledigt, einfach nen system("cls") nach dem Ändern der Textfarbe und das problem ist gelöst MfG Artery €dit: Ahh hab ihn gefunden, nur wieso kann ich meinen 1. beitrag nicht editieren? =O