-
Gesamte Inhalte
9912 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Klotzkopp
-
Vermutlich. Unter General > Character Set auf "Use Multi-Byte Character Set" stellen.
-
Mit deinen aktuellen Projekteinstellungen, ja. Ich sagte es doch schon: Welcher Typ sich hinter TCHAR/LPTSTR/LPCTSTR verbirgt, hängt von deinen Projekteinstellungen ab. Es gibt eigentlich gar keine Methode SetCurrentDirectory. Es gibt SetCurrentDirectoryA und SetCurrentDirectoryW. SetCurrentDirectory ist nur ein Präprozessorsymbol, das entweder auf die eine oder auf die andere Variante verweist. Und das ist von denselben Projekteinstellungen abhängig, die regeln, was TCHAR ist. Das gilt übrigens für fast alle WinAPI- und MFC-Funktionen, die mit Strings arbeiten. Wenn man durchgängig die T-Varianten benutzt, kann man die Projekteinstellungen zwischen Multibyte und Unicode umschalten, und es lässt sich trotzdem noch immer alles kompilieren. Wenn du das nicht brauchst, solltest du dich vielleicht auf eines von beiden festlegen. Brauchst du Unicode?
-
CreateThread ist eine Funktion, die du aufrufen musst, um einen neuen Thread zu starten. Funktionsaufrufe dürfen aber nicht einfach so in der Quellcodedatei stehen, sondern müssen innerhalb von anderen Funktionen stehen, z.B. in main. Eine Threadfunktion kann auch nicht jede beliebige Signatur haben - void(void) ist schon mal falsch. Eine Threadfunktion für CreateThread muss die Signatur DWORD(void*) haben. Die richtige Signatur erkennst du daran, dass du den Cast auf LPTHREAD_START_ROUTINE nicht brauchst. Allerdings ist CreateThread generell keine gute Idee, wenn du vorhast, irgendwelche Funktionen der Standardbibliothek zu benutzen. In diesem Fall ist _beginthreadex die richtige Funktion. Hier muss die Threadfunktion void(void*) sein. Ich weiß ja nicht, was für ein lustiges Programm du da schreiben willst/schreiben wolltest/geschrieben hast, aber ich habe den Eindruck, dass du dich da mächtig übernimmst. Vielleicht suchst du dir zunächst mal ein paar einfachere Aufgaben, als gleich mit Threads anzufangen. Das Thema hat es in sich.
-
Ich wollte auch nicht so bissig rüberkommen, wie es sich jetzt liest :e@sy Die Schnittstelle einer Klasse sollte nur aus ihren public-Methoden bestehen. Und die sollte man aufrufen können, wie man will, ohne dass etwas Unvorhergesehenes passiert. Dass dabei in bestimmten Anwendungsfällen Code ungenutzt bleibt oder nichts tut, kommt vor. Wenn das der Fall ist, kann man immer noch nachoptimieren, falls es ein Problem darstellt.
-
2er und 1er Kompliment bilden aus Kommazahl
Klotzkopp antwortete auf Goldrausch's Thema in Algorithmik
In Vorzeichen/Betrag-Schreibweise, ja. Nein, die Position des Kommas kann man gar nicht in ein Bit stecken. Das ist eine Zusatzinformation, die du gesondert vorhalten musst. -
2er und 1er Kompliment bilden aus Kommazahl
Klotzkopp antwortete auf Goldrausch's Thema in Algorithmik
Das passt nicht in 8 Bit. Für 47 brauchst du 6 Bit, für 0,25 2, macht zusammen 8. Damit ist das höchste deiner 8 Bits bereits gesetzt, du würdest ein neuntes für das Vorzeichen brauchen. -
2er und 1er Kompliment bilden aus Kommazahl
Klotzkopp antwortete auf Goldrausch's Thema in Algorithmik
Du musst die richtigen Stellen wegnehmen. -
LPCTSTR ist je nach Projekteinstellungen, const char* oder const wchar_t*. Im ersten Fall kannst du einfach unterordner.c_str() benutzen, im zweiten Fall musst du den String umwandeln (MultiByteToWideChar) oder wstring benutzen.
-
Na und? Es geht mir hier nur um die Klasse Geburtstagsfeier. Über die öffentliche Schnittstelle dieser Klasse sind die Operationen, die ich gezeigt habe, möglich. Dass das in dieser Art und Weise, wie die Klasse in die grafische Oberfläche eingebunden ist, nicht passieren kann, ist zweitrangig. Du kannst natürlich deinen Code so schreiben, dass die Klassen nur dann richtig funktioneren, wenn sie auf eine ganz bestimmte Art und Weise benutzt werden. Stabiler Code kommt dabei aber nicht heraus. Und wenn du mal irgendeine deiner Klassen wiederverwenden willst, wünsche ich dir jetzt schon viel Spaß.
-
2er und 1er Kompliment bilden aus Kommazahl
Klotzkopp antwortete auf Goldrausch's Thema in Algorithmik
Bitte kein Threadpushing, siehe Boardregeln. -
Wenn die Kuchengröße kleiner wird, kann sowohl der "neue" Text länger als 16, als auch der "alte" kürzer als 16 sein. Testcode: Geburtstagsfeier f = new Geburtstagsfeier( 20, false, "Text" ); f.Personenanzahl = 2; f.KuchenText = "laaaaaaaaaaaaaaaaaaanger Text"; [/code] Damit wird die zweite if-Bedingung wahr. Dann kannst du die Prüfung und die Änderung von maxLänge mal rausnehmen, und dich über die Exception freuen
-
Die Bedingung des zweiten if kann wahr werden, wenn sich inzwischen die Kuchengröße geändert hat. Der neue Text wird komplett verworfen, und der alte auf die maximale Länge beschnitten, wenn der neue Text zu lang ist.
-
Einfacherer Weg für Umlautkonvertierung?
Klotzkopp antwortete auf geloescht_Henriette's Thema in .NET
HttpUtility.HtmlDecode Method (String) (System.Web) -
Du musst gar nicht darauf zugreifen, du musst nur dafür sorgen, dass eine einzige Instanz erstellt wird. Der Zugriff geschieht über den statischen Zeiger, für den brauchst du keine Instanz der Klasse.
-
Woraus schließt du das? Der Aufruf von getLastConnection kann das nicht bewirken. Es wird eine neue Verbindung aufgebaut, wenn du ein Connect-Objekt erstellst. Das solltest du natürlich nur einmal tun. Und was hat das alles mit main.h zu tun?
-
Nicht ganz. rand gibt int zurück, RAND_MAX ist auch ganzzahlig. Daher würde dort normalerweise eine Ganzzahldivision durchgeführt, wobei dann meistens 0 und ganz selten 1 herauskommen würde. Daher wird der Dividend (rand()) dieses Quotientent auf double gecastet, damit der Compiler hier eine Fließkommadivision durchführt.
-
main.h ist kein besonderer Header. Es ist weder ein Standardheader, noch einer, der von VC automatisch angelegt wird. Du kannst deine eigenen Header nennen, wie du willst, main.h nimmt da keine Sonderstellung ein. Ich weiß nicht, worauf du zugreifen wolltest, aber da steht nichts drin, was du nicht selbst hineinschreibst. Beschreib doch mal das Problem, nicht das, was du für die Lösung hältst
-
Dann solltest du das Ergebnis nicht in einer int-Variablen ablegen
-
Zeile 14: Die eckigen Klammern müssen weg. Überhaupt darfst du eckige Klammern ohne "Inhalt" nur bei der Deklaration eines Arrays benutzen. Zeile 16: isdigit kann nur einzelne Zeichen prüfen, kein ganzes Array auf einmal. Und das Semikolon am Ende muss weg. Zeile 19: Diese "Typumwandlung" ist Unsinn. Schau dir mal die Funktion atof an. Zeile 26: switch funktioniert nicht mit Zeichenketten.
-
Dein Code sollte schon in einer Funktion stehen, vorzugsweise main().
-
Du musst keinen Zeiger auf ein Objekt übergeben, um es in der Funktion ändern zu können. Es gibt auch Referenzen. Dein Code sieht ein wenig danach aus, als ob du eigentlich in C programmierst, und nur statt malloc/free mit new/delete arbeitest. Ich würde sagen, letzteres. Du solltest gar nicht wissen müssen, ob ein Zeiger noch auf gültigen Speicherbereich zeigt. Du solltest nach Möglichkeit gar nicht mit rohen Zeigern hantieren - Stichwort RAII. In C++ hat man ganz andere Möglichkeiten, so etwas zu lösen. Da gibt es Container und Smartpointer. Zeiger braucht man in C++ eigentlich nur selten.
-
Die Klasse string liegt im Namensraum std, also std::string.
-
Man kann das mit Bitoperationen machen. Es gibt sehr viele Lösungen zu dieser Aufgabe. Man kommt auch komplett ohne Schleife aus. Das dürfte die einfachste Lösung sein: int Elemente[20] = {1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2}; Ein anderes Beispiel: int Elemente[20]; Elemente[0]=Elemente[2]=Elemente[4]=Elemente[6]= Elemente[8]=Elemente[10]=Elemente[12]=Elemente[14]= Elemente[16]=Elemente[18]=1; Elemente[1]=Elemente[3]=Elemente[5]=Elemente[7]= Elemente[9]=Elemente[11]=Elemente[13]=Elemente[15]= Elemente[17]=Elemente[19]=2;[/code] Und noch eins: [code]#include <algorithm> int generator() { static int x = 2; x = 3-x; return x; } int main() { int Elemente[20]; std::generate( Elemente, Elemente + 20, generator ); } Vermutlich soll beim Lösen der Aufgabe aber eine bestimmte, vorher besprochene Technik benutzt werden.
-
BCB6: Funktion im Hintergrund starten
Klotzkopp antwortete auf Is it Real's Thema in C++: Compiler, IDEs, APIs
Dann wäre ein Link vermutlich besser gewesen. Es geht auch gar nicht darum, ein Fenster zu verstecken, sondern darum, einen anderen Prozess zu starten, ohne auf dessen Ende zu warten. -
Public Member sind keine Lösung, sondern ein Bruch der Kapselung. Und auch keine zum Ändern Jede Klasse kann darin rumwurschteln, wie sie will. Dann kannst du auch gleich globale Variablen benutzen. Was meinst du jetzt mit "hier"? Eine Funktion kann kein Array zurückgeben. Vielleicht solltest du mal von char-Arrays weg hin zu Stringklassen.