Alle Beiträge von Klotzkopp
-
[C]: Speicherfehler
Ich nehme mal an, dass du auf einem 32Bit-Windows mit MSVC unterwegs bist. Da hat ein short int zwei Byte, und ein int vier. scanf mit %d geht von einem int aus, also wird die Adresse, die du mitlieferst, als Zeiger auf einen vier Byte großen Speicherbereich interpretiert, und der eingegebene Wert da rein geschrieben. Von diesen vier beschriebenen Bytes gehören aber nur die ersten beiden zu Wahl, die anderen beiden könnten theoretisch zu einer anderen Variablen gehören. Der Wert, der ihn Wahl landet, ist der gleiche, weil dein Windows Little-Endian ist.
-
[C]: Speicherfehler
Deklarier Wahl bitte mal als int, nicht als short int. P.S.: Hättest du diese Meldung früher gebracht, hätte ich dir viel schneller helfen können
-
[C]: Speicherfehler
Bei mir läuft's jetzt. Wie sieht denn dieser "Speicherfehler" aus? Bekommst du eine Fehlermeldung? Wenn ja, wie lautet die genau?
-
[C]: Speicherfehler
Tut mir leid, aber dein Programm geht nur, wenn man zu Beginn mindestens zwei Einträge anlegt, und zwischendurch nicht wieder alle löscht. Ich bekomme bei Wahl = 4 keinen Speicherfehler. Ich bekomme einen handfesten Absturz wegen Dereferenzierung eines Nullzeigers, wenn ich ein Element hinzufüge und gleich wieder lösche. Geht das bei dir etwa? Warum kann das nicht sein? Du versuchst, mit diesen statischen Variablen die Sonderfälle für push (noch kein Eintrag da) und pop (nur noch ein Eintrag da) zu unterscheiden. Das geht aber nicht, weil sich die Anzahl der Einträge eben in push und pop ändern kann. Wenn ich den letzten Eintrag in pop lösche, müsste IsHead in push ja auf magische Weise wieder true werden, damit das funktioniert.
-
[C]: Speicherfehler
Deine Vorgehensweise mit den statischen bool-Variablen funktioniert so nicht. Wenn man z.B. ein Element anlegt und gleich wieder löscht, versuchst du in pop() auf head -> PNext -> PPrev zuzugreifen. head -> PNext ist aber 0. Mit funktionsstatischen Variablen kannst du nicht die Sonderfälle erkennen. Du musst das über die Zeiger selbst prüfen.
-
Betriebssystem selbst programmiert...
Ich halte das nicht mal für einen Fehler. Eher sehe ich die allgmeine Belustigung in einer weit verbreiteten falschen Verwendung des Wortes "programmieren" begründet. IMHO stellt das direkte Objekt bei diesem Verb das System dar, für das ein Programm geschrieben wird. Man programmiert kein Programm, sondern einen Microcontroller oder eben ein Betriebssystem, d.h. man schreibt Programme für das Betriebssystem. Zum Vergleich: Das Wort "programmierbar", also etwas, das man programmieren kann. Ein Taschenrechner ist programmierbar, wenn man dafür Programme schreiben kann. Ich habe noch nie gehört, dass ein Programm programmierbar wäre. Insofern kann man das Erstellen von Shellskripten durchaus als das "Programmieren eines Betriebssystems" bezeichnen. MUSEN.
-
CListControl direkt bearbeiten?
*MilkaKuh an der Hand nehm* Siehst du, da links, da steht eine Übersicht. Und welche Klassenbibliothek benutzen wir? Richtig, die MFC. Und welches Control brauchen wir? Richtig, CListCtrl. Schau mal, da gibt es einen eigenen Menüpunkt "List Controls". Da klicken wir jetzt drauf. Und jetzt schauen wir uns die Liste der Artikel an. Ruhig etwas genauer. Schau mal, da gibt es einen, der heißt "Editing Sub-Items in List Control". Könnte das was für uns sein? Mal im Ernst, ein Minimum an Eigenleistung beim Suchen nach Informationen sollte man von einem Programmierer doch wohl erwarten können, oder?
-
CListControl direkt bearbeiten?
Das Windows-Standardlistcontrol unterstützt das nur für die erste Spalte. Du musst den Style LVS_EDITLABELS setzen und LVN_ENDLABELEDIT behandeln. Wenn du mehr willst, musst du das von Hand machen oder eine Klasse suchen, die das kann, z.B. bei codeproject.
-
ganz einfach: CString to Char ?
Falls du nicht UNICODE definiert hast, brauchst du da gar nichts umzuwandeln. In diesem Fall hat CString einen Konvertierungsoperator nach const char*. Du kannst also einfach den CString dieser Funktion als Parameter mitgeben.
-
ganz einfach: CString to Char ?
Bist du danz sicher, dass ein const char* nicht reicht? Falls du nicht UNICODE definiert hast, sollte das automatisch gehen. Wie sieht die Funktion aus, für die zu char* zu brauchen glaubst? Warum hat CString::GetBuffer bzw. CString::operator LPCTSTR nicht funktioniert, bzw. hast du das überhaupt ausprobiert?
-
[C++] Problem: Datei einlesen
Warum führst du eigentlich zwei Threads gleichzeitig zu diesem Thema? Thread geschlossen, hier geht's weiter.
-
ganz einfach: CString to Char ?
Gar nicht. Ein CString ist eine Zeichenkette, ein char nur ein einzelnes Zeichen, das passt nicht. Falls du char* meinst: Sieh dir mal CString::GetBuffer an.
-
komischer konstruktur ??
Also, Das gehört überhaupt nicht zum Konstruktor. Hier ist alles normal. Ein Konstruktor mit einem CWnd*-Parameter. Dem Kommentar nach zu urteilen, hat der einen Defaultwert. Das ist eine normale Initialisierungliste. Hier wird ein Basisklassenkonstruktor mit zwei Parametern aufgerufen. Ja, und sonst passiert nichts. Du solltest da ewas reinschreiben können. Wenn das nicht geht, hat das jedenfalls nichts mit dem gezeigten Code zu tun, sondern vemutlich mit dem, was du reinschreibst. Auf die Steuerelemente des Dialogs kannst du hier jedenfalls noch nicht zugreifen, die sind noch nicht da. Hier wäre eine genauere Fehlerbeschreibung als "stürzt ab" hilfreich. So was hat schon VC6 erzeugt. Alle von CDialog abgeleiteten Klassen bekommen solche Konstruktoren. Damit kannst du beim Erzeugen einen Zeiger auf das Parent-Fenster angeben.
-
Problem mit RGBToHtml()
Das meinte ich mit "nicht direkt"
-
Problem mit RGBToHtml()
Die funktionieren schon. Man muss sie nur richtig benutzen. In der Doku zu RGBToHtml steht: Da steht, dass das ein Puffer sein muss, den der Aufrufer reserviert. Übergeben wird der in Form eines Zeigers (anders geht es in C nicht). Das Problem ist eigentlich meistens, dass man dem Parametertypen LPTSTR nicht direkt ansieht, dass es nur ein Zeiger ist.
-
Problem mit RGBToHtml()
Das ist ein uninitialisierter Zeiger. Schlecht. Das ist ein uninitialisierter Zeiger auf einen Zeiger. Passt nicht. Das ist ein Array von uninitialiserten Zeigern. Passt auch nicht. TCHAR htmlCol[8];
-
Link-Navigation im IExplorer abfangen
Im zweiten Parameter von OnBeforeNavigate steht doch der Ziel-URL.
-
[MFC] Größe einer View auf DIN A4 festlegen
Du musst zum Drucken die ganze Ansicht skalieren, sobald du weißt, welche Auflösung der Drucker hat. Stichworte: OnPreparePrinting, GetDeviceCaps.
-
[MFC] Schreibschutz Edit-Feld ein/ausschalten
Ich empfehle da: 1. Ein assert, dass GetDlgItem nicht 0 zurückgibt, und 2. Ein assert, dass es sich wirklich um ein CEdit* handelt (z.B. mit IsKindOf(RUNTIME_CLASS(CEdit)))
-
[MFC] Schreibschutz Edit-Feld ein/ausschalten
CEdit::SetReadOnly
-
Suche BMI Programm/Quelltext
Viele Leute, die in Foren wie diesem fertige Quelltexte suchen, sind solche, die ihre Hausaufgaben von anderen Leuten machen lassen wollen. Das wird nicht so gern gesehen Selbst ein Anfänger sollte ein BMI-Konsolenprogramm in annehmbarer Zeit hinbekommen. Bei konkreten Problemen mit dem Code wird hier auch gern geholfen. Ja. Ich würde sogar vemuten, mehr als für PHP und Java zusammen. Vielleicht nicht gerade etwas so triviales wie BMI
-
SetFocus() geht nicht :(
Bei mir steht in der vom Assistenten generierten OnInitDialog-Methode immer folgender hilfreicher Hinweis: return TRUE; // return TRUE unless you set the focus to a control
-
[MFC/C++] Machinecode erzeugen
Du bist dir der üblichen Probleme bei dieser Methode bewusst? - wechselnde IP-Adressen bei DHCP-Clients - Keine Netzwerkkarte, keine MAC-Adresse - MAC-Adressen von BT-Sticks lassen sich prima weitergeben - Was ist, wenn jemand eine andere Netzwerkkarte einbaut? Was willst du denn damit erreichen?
-
[MFC/C++] Machinecode erzeugen
Muss denn bei mehrfachem Aufruf immer dieselbe Kombination herauskommen? Falls nicht (und es dich nicht stört, dass die Zahl etwas größer als gefordert ist): CoCreateGuid.
-
MFC C++ Eine Datei erzeugen und diese dann mit Daten füllen!
Auch Beispiele stehen in der MSDN Library: http://msdn.microsoft.com/library/en-us/vclib/html/_mfc_cfile.3a3a.open.asp