Alle Beiträge von Klotzkopp
-
Visual Studio .NET Installation Problem
Welches Betriebssystem? Ist das die ganze Fehlermeldung?
-
problem mit _beginthread-aufruf
Memberfunktionen müssen static sein, um als Threadfunktionen benutzt werden zu können. Bei nichtstatischen Memberfunktionen braucht man immer eine Instanz der Klasse für den Aufruf.
-
problem mit _beginthread-aufruf
Wie sieht die Deklaration von CIRC::GetMsg aus?
-
Dos-Programme debuggen
Das kann schon nicht sein. Du kannst mit MSVC6 keine DOS-Programme erstellen. Vermutlich hast du ein Win32-Konsolenprogramm.
-
Speicherzugriffsfehler - gethostbyaddr
Das ist eine Zuweisung, kein Vergleich. Du setzt hier str_host auf NULL. Dieser Ausdruck wird wiederum immer als false ausgewertet, daher wird der if-Block niemals betreten. In der nachfolgenden Anweisung greifst du dann über einen Nullzeiger auf einen Member zu. Vergleich ist ==.
-
char, *char und char[]
Nein, nicht nur Literale (also Konstanten im Quellcode) landen als Strings in der ausführbaren Datei. Auch Importsymbole und Debugginginformationen können da stehen. Genau. Das ist es, was ich (schon mehrfach) mit statischer Lebensdauer meinte. Literale sind - solange dein Programm läuft - immer da, du brauchst dich um nichts zu kümmern. Die Frage ist berechtigt. In solchen Fällen sollte die Antwort immer in der Dokumentation der Funktion stehen. Ich zitiere mal aus dem Eintrag in der MSDN Library für inet_ntoa:
-
char, *char und char[]
In dem Code wird kein Literal geändert. Dein Zeiger ist wie ein Stück Papier, auf dem du mit Bleistift eine Adresse notierst. Wie gesagt, mit Bleistift. Du kannst das jederzeit ausradieren und eine andere Anschrift aufschreiben. Das heißt aber nicht, dass du damit irgendwie das Haus beeinflussen kannst, das an der Adresse steht. Wird irgendein Haus abgerissen, oder zieht jemand um, nur weil du auf deinem Zettel eine andere Adresse aufschreibst? Ob du einen Zeiger an eine andere Stelle zeigen lässt, hat auf den allozierten Speicher überhaupt keinen Einfluss. Es ist da wie mit allen Zeigern. Der Zeiger wird kopiert, nicht das, worauf er zeigt. Ich glaube, es ist das erste mal, dass du überhaupt mit Zeigern arbeitest. Vielleicht solltest du nicht gerade mit char-Zeigern anfangen, weil die nunmal eine Sonderbehandlung bekommen. Nein. Malloc verwendest du, wenn du eine Lebensdauer über den Scope hinweg haben willst oder die Größe eines Arrays erst zur Laufzeit kennst. Ich glaube, dir ist nicht ganz klar, was Literal bedeutet. Ein Literal ist eine Konstante in deinem Quellcode. Es gibt in C Ganzzahl-, Fließkomma-, Zeichen- und Zeichenkettenliterale. Zeichenkettenliterale sind die einzigen, von denen du überhaupt eine Adresse bekommen kannst. Du kannst aber den Inhalt nicht über diese Adresse ändern, ohne undefiniertes Verhalten zu erzeugen. In Ergänzung zu carstenjs Antwort: In deinem Programm gibst du die Adresse der Zeigervariablen aus, nicht die Adresse, auf die der Zeiger zeigt.
-
char, *char und char[]
test2 ist ein Array mit automatischer Lebensdauer, d.h. das Array wird zerstört, wenn das Programm den Scope verlässt, in dem die Variable definiert ist. Das Literal, das für die Initialisierung benutzt wird, hat statische Lebensdauer - wie alle Stringliterale.
-
char, *char und char[]
Da hast du nur einen Zeiger auf ein Literal, da gibt es nichts freizugeben.
-
char, *char und char[]
Stringliterale habens statische Lebensdauer, brauchen also nicht freigegeben zu werden. Die sind da, solange das Programm läuft. Solange dir klar ist, dass testz jetzt auf das Array test zeigt. Kopiert wird da nichts, wenn du testz änderst, änderst du auch test. Immerhin darfst du das. Anzahl der Zeichen im Literal plus eins für das Nullzeichen.
-
Datasource via C++ adden
http://msdn.microsoft.com/library/en-us/vccore/html/_core_data_source.3a_.programmatically_configuring_an_odbc_data_source.asp
-
Aus String Array in Char Array zum Sortieren
Wenn du als Übungsaufgabe mit Quicksort sortieren sollst, dann sollst du den Algorithmus vermutlich selbst implementieren. Dann darfst du keine vorgefertigte Funktion benutzen, weder std::sort noch qsort.
-
Aus String Array in Char Array zum Sortieren
Wenn nicht, dann etwas besseres. Neuere Implementierungen benutzen üblicherweise einen Algorithmus, der auch im Worst case O(n log n) hat. Da das eine Templatefunktion ist, kannst du dir den Quellcode ansehen. #include <algorithm> string wort[20]; std::sort(wort, wort+20);[/code]
-
Aus String Array in Char Array zum Sortieren
Muss es denn qsort sein? Warum nicht std::sort? Damit könntest du das das string-Array direkt sortieren.
-
Kopiergeschwindigkeit von Dateien drosseln
Da beim Kopieren von Dateien die CPU herzlich wenig zu tun hat, und dieser Prozess sowieso die meiste Zeit mit Warten verbringt, wird dir das nichts nützen. Du musst die Bremse da ansetzen, wo der Flaschenhals ist. Nachtrag: Wie (mit welchem Programm) kopierst du denn?
-
Mehrfachansichten, Fensterteilung
Stichwort: CSplitterWnd
-
CMenu
Nö. Du kannst das auch umstellen: Eigenschaften von Anzeige -> Darstellung -> Effekte -> Unterstrichene Buchstaben für Tastaturnavigation ausblenden.
-
CMenu
Wird denn überhaupt irgendein Hotkey unterstrichen? Standardmäßig ist zumindest XP so eingestellt, dass die Unterstriche erst angezeigt werden, wenn man auf die Alt-Taste drückt.
-
MS Virtual PC mit Win98SE - Backslash in der Kommandozeile
Hallo, ich habe hier MS Virtual PC SP 1 mit deutschem Windows 98 SE. Das Host-OS ist ein deutsches Windows XP Professional SP 2. Das Problem ist, dass ich im Kommandozeileninterpreter (COMMAND.COM) direkt keinen Backslash eingeben kann. Mit Alt-Gr 92 geht es. Bei Notepad geht es ganz normal. Es scheint nicht am Hostkey zu liegen. Ich habe Shift rechts (Vorgabe), Strg rechts und Scroll Lock ausprobiert, keine Änderung. Ich habe keine Informationen über dieses Problem gefunden. Habt ihr davon schon mal gehört? Oder hat vielleicht einer von euch eine ähnliche Konfiguration und kann das mal gegenprüfen?
-
C++ karte generieren
Ich versteh nur Bahnhof. Wie zeichnet man unbegrenzte Felder? Und wieso "eigentlich"?
-
C++ karte generieren
Ich fürchte, bevor du dich mit dem "wie" beschäftigst, musst du dir erst über das "was" klar werden. Hast du denn Kartendaten, die du "nur noch" darstellen musst?
-
Graph/ Grafik in einer MFC-Anwendung anzeigen
Da gibt's viele Möglichkeiten. Leite dir eine eigene Klasse von CWnd ab und du kannst in OnPaint nach Herzenslust malen. Keine Funktion, die MFC haben eine Klasse dafür: CFileDialog. Im Ressourceneditor geht das gar nicht, soweit ich weiß. Das wirst du wohl im Programmcode machen müssen. Hast du die Gruppe mit einer int-Variablen verknüpft?
-
Speicher freigeben
Nur, wenn du die auch jeweils mit new erstellst. Was ist ein "Hauptobjekt"? Wenn du die mit new erzeugten Member irgendwie an das "Hauptobjekt" bindest, wirst du vermutlich nicht delete aufrufen müssen.
-
Probleme mit Array und String Addition
Ganz einfach. Wenn du z.B. 4 Elemente in einem Array hast, geht der gültige Index von 0 bis 3, nicht bis 4.
-
Probleme mit Array und String Addition
Ich bin heute wohl betriebsblind...