Alle Beiträge von Klotzkopp
-
fstream, textfiele schreiben ohne zu überschreiben
Kleiner Tipp: Der Konstruktor von ofstream hat einen zweiten, optionalen Parameter.
-
Heapfehler
Du kannst über den Callstack (auf deutsch Aufrufliste) sehen, wo der Aufruf herkam, der letztendlich zum Crash geführt hat. Das bringt dich aber nur dahin, wo der "schlechte" Zeiger freigegeben werden sollte.
-
Heapfehler
Dann gibst du einen Zeiger an free/delete, den du nicht mit malloc/new bekommen hast. Möglicherweise hast du den Zeiger geändert (inkrementiert, neu zugewiesen), oder du schreibst irgendwo in deinem Code über eine Arraygrenze hinaus und änderst damit einen solchen Zeiger.
-
Heapfehler
Benutzt du DLLs? Falls ja, hast du bei den DLLs und beim Hauptprogramm dieselbe Version der Laufzeitbibliothek benutzt?
-
variablenanzeige...float ? double ?
Nein, er zeigt 6009652.53l und 4502236.94l. Zwei Nachkommastellen und ein kleines 'L'. Den l-Prefix gibt es nicht für %f, daher wird der Buchstabe normal ausgegeben.
-
Klassedefinition Variablendeklaration
Nein, so pauschal kann man das nicht sagen. Man muss sich klarmachen, dass include-Direktiven nichts weiter bewirken, als vom Präprozessor durch den Inhalt der angegebenen Datei ersetzt zu werden. Du kommst also ohne die include-Direktive in der Headerdatei aus, wenn du in jeder .cpp-Datei, die diese Headerdatei benutzt, vor die include-Direktive der Headerdatei die für winsock2.h setzt. Entscheidend ist nur, dass hinterher, wenn alle include-Direktiven ausgewertet sind, der Inhalt von winsock2.h vor dem Inhalt deiner Headerdatei in der .cpp-Datei landet.
-
Klassedefinition Variablendeklaration
Was heißt "du kannst nicht"? Bekommst du eine Fehlermeldung? Falls ja, welche? Siehe Signatur.
-
C++ Tabs im PageControl ausblenden
Verrätst du uns, welche UI-Bibliothek du benutzt?
-
MD5 Hashes in C(++)
Es gibt in C und C++ überhaupt keine Funktionen ohne "extra Code oder Libraries". Es ist ein ganz anderes Sprachkonzept als PHP. Ja. Du wolltest eine einfache Lösung und hast mehrere Links zu solchen bekommen.
-
Funktionen und übergabe von Argumenten, Anfängerproblem
Kein Denkfehler, sondern eine Spracheigenschaft von C und C++, die du nicht kennst Normalerweise werden von den Funktionsargumenten Kopien gemacht (call by value). Änderungen in der aufgerufenen Funktion betreffen nur diese Kopie, und wirken sich nicht auf die Variable aus, die im Aufruf steht. Arrays sind da allerdings eine Ausnahme. Von einem Array wird immer nur ein Verweis übergeben (call by reference). Änderungen am Array in der aufgerufenen Funktion wirken sich damit auf das Array aus, das für den Aufruf benutzt wurde.
-
Prozesssteuerung
- AfxGetAppName - GetModuleFileName
-
Spezial NIM-mit Sieggarantie
Ich glaube, du gehst falsch an die Sache heran. Ich würde zuerst die Gesetzmäßigkeit suchen, und dann dazu einen Algorithmus entwickeln. Finde doch zuerst mal raus, welche Anzahl der Computerspieler übrig lassen muss, um immer zu gewinnen. Die 3 hast du ja offenbar schon gefunden. Dann solltest du dich fragen, ob es eine Anzahl gibt, die der Computerspieler in der vorausgehenden Runde übrig lassen kann, so dass er in der nächsten auf jeden Fall auf 3 kommen kann. Wenn du das ein paar Mal durchspielst, springt dich die Gesetzmäßigkeit praktisch an.
-
Hilfe bei Anfängerproblem c++
"Geladen" wird da nichts. Include-Direktiven solltest du da benutzen, wo du sie brauchst, sonst nicht. Und using-Direktiven sind ein zweischneidiges Schwert, wenn man sie auf ganze Namensräume anwendet. Einerseits ersparen sie einiges an Schreibarbeit, andererseits heben sie aber den Hauptzweck eines Namensraumes wieder auf: Die Vermeidung von Namenskonflikten. Auf keinen Fall solltest du using-Direktiven in Headerdateien benutzen, d.h. in Dateien, die selbst mittels einer include-Direktive in eine andere Datei eingebunden werden. Das lässt sich mal eben in ein paar Worten erklären. Schau mal hier rein: http://de.wikipedia.org/wiki/Oop
-
Hilfe bei Anfängerproblem c++
Das ist so nicht ganz richtig. Die include-Direktive des Präprozessors (die fangen alle mit # an) bewirkt eigentlich nur, dass vor dem Compilieren an die Stelle der Direktive der Inhalt der angegebenen Datei (hier: iostream) kopiert wird. iostream ist eine Datei, die u.a. Deklarationen für die Konsolenein- und -ausgabestreams enthält. Befehle gibt es in C und C++ nicht Alle Objekte und Funktionen der C++-Standardbibliothek liegen im Namespace std. Um also cout benutzen zu können, muss man std::cout schreiben. Um das nicht machen zu müssen, kann man auch einzelne (oder, wie hier, alle) Objekte eines Namensraum in den globalen Namensraum "heben". Das geschieht mit Hilfe der so genannten using-Direktive.
-
MFC und Dialog
Wenn du dich mit der Funktionsweise der MFC nicht gut auskennst, solltest du Nachrichtenbehandlungsfunktion nicht von Hand, sondern immer mit dem Klassenassistenten anlegen. Auf dem zweiten Reiter findest du dort die Fenster und Steuerelement und die Nachrichten. Wähle dort deine Dialogklasse und WM_CLOSE aus und füge die Funktion hinzu.
-
MFC und Dialog
Hast du die Methode "von Hand" angelegt, d.h. nicht über den Assistenten? Dann hast du vermutlich den MessageMap-Eintrag vergessen. Ohne den läuft nichts.
-
Visual Basic - Resizer :(
Verschoben: -> Basic
-
Textdatei komplett auslesen
Du brauchst eine Schleife und eine CString-Variable, die eine einzelne Zeile aufnimmt, wie in dem Beispielcode von Manfred.Becker.
-
Textdatei komplett auslesen
Das ist wieder mal eine grandiose Fehlerbeschreibung... Was soll das werden? Willst du die Version mit dem char-Buffer oder die Version für CString verwenden? Warum willst du nur 7 Zeichen lesen?
-
Prozesssteuerung
http://msdn.microsoft.com/library/en-us/perfmon/base/taking_a_snapshot_and_viewing_processes.asp "Er machts ned" ist eine schlechte Fehlerbeschreibung. Was genau tust du und welche Fehlermeldung erhältst du?
-
Prozesssteuerung
In der MSDN Library findet sich da ein sehr schönes Beispiel. DLLs werden nicht includet. Für Kernel32.dll musst du eine Importbibliothek dazulinken, daber das sollte VC schon von ganz alleine machen, wenn du es ihm nicht ausdrücklich verboten hast.
- scanf()
-
scanf()
fflush erzeugt, wenn es auf Eingabeströme wie stdin angewendet wird, undefiniertes Verhalten. Bei einigen Compilern bewirkt es ein Löschen des Eingabepuffers, bei deinem bewirkt es anscheinend gar nichts, aber darauf darf man sich nicht verlassen.
-
scanf()
Dieses Verhalten kommt daher, dass der Tastendruck der Eingabetaste noch im Eingabepuffer steht und dort nicht rausgeholt wird. Das kannst du beheben, indem du vor scanf den Puffer löschst: setvbuf(stdin,NULL,_IONBF,0); setvbuf(stdin,NULL,_IOFBF,BUFSIZ); [/code] Und lass fflush(stdin) weg, das erzeugt undefiniertes Verhalten.
-
Vector an Methode übergeben
Über die Headerdatei bindest du nur die Deklaration der Klasse und ihrer Methoden ein. Die Definition befindet sich in einer Bibliothek, und die musst du dazulinken. Siehe auch: http://xfc.xfce.org/docs/howto/html/getting_started.html#GS09