Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Bei mir klappt's. Ist der Text vielleicht länger als 100 Zeichen?
  2. MAKEINTRESOURCE ist ein Makro, das den Wert einer Resource-ID (üblicherweise ein #define für ein numerisches Literal) auf 16 Bit beschränkt und den Typ auf LPCTSTR ändert. Das ist aber nicht wirklich ein Zeiger auf einen String. Es macht keinen Sinn, dieses Makro auf den Rückgabewert von LoadMenu anzuwenden.
  3. Das macht man mit UPDATE_UI-Handlern. Schau mal hier rein: http://fachinformatiker-world.de/forums/showthread.php?s=&threadid=25900
  4. @iXs`und [FiSi]Neo: Bitte beim Thema bleiben, danke.
  5. Normalerweise werden für Menüeinträge und Toolbarbuttons in der Statuszeile des Programms kurze Hilfstexte eingeblendet, wenn man mit der Maus darüber fährt. Wenn dieser Text fehlt, wird diese Meldung im Debugger ausgegeben. Abstellen kannst du das, indem du einen Text in der Stringtabelle, mit derselben Resource-ID wie der Menüeintrag anlegst.
  6. Vielleicht Standard für Windows, aber nicht für C++. Außerdem braucht man für den Zugriff einen OLEDB-Provider für die Datenbank.
  7. Normalerweise schreibt man Datenbanken nicht selbst, sondern greift auf bestehende Datenbanken zu. Da es keine standardisierte Datenbankschnittstelle für C++ gibt, sondern eine Vielzahl von mehr oder weniger proprietären und datenbankspezifischen Schnittstellen, hängt die Antwort auf deine Fragen davon ab, mit welcher Datenbank du arbeiten willst. Hier ging es um ein ähnliches Thema.
  8. Mag sein. Aber jeder sollte auf einschlägigen Hoax-Seiten prüfen, ob es tatsächlich ein Virus ist, bevor er sowas weiter verbreitet, und außerdem auf multiple Satzzeichen und Schreien verzichten. Mein ganz persönliche Meinung.
  9. Ich glaub ich hab's: Du erstellst ein zweites Bitmap-Objekt, in der gewünschten Größe und Farbtiefe. Dann erstellst du daraus ein Graphics-Objekt und malst die Quellbitmap in dieses Graphics-Objekt: int neuebreite = 500, neuehoehe = 500; Bitmap source( L"Datei.gif" ); Bitmap target( neuebreite, neuehoehe, PixelFormat32bppRGB ); Graphics g( &target ); g.DrawImage( &source, 0, 0, neuebreite, neuehoehe );[/CODE] Dann kannst du target speichern.
  10. War ja auch nur ein Hinweis, kein Vorwurf
  11. Du bist im falschen Forum: FAQ --> Verschoben nach C++: Compiler, IDEs, APIs.
  12. Dieses Forum ist kein Programmierservice und auch keine Source-Suchmaschine. Wenn du versuchst, das Programm selbst zu schreiben, und auf Probleme stößt, helfen wir dir gern weiter.
  13. Ja, entweder sie einigen sich (AVEN an Tagen mit ungeraden Datum, Chief an den anderen), oder sie löschen ihre Beiträge gegenseitig.
  14. Ein Schreibfehler. Hab's geändert. Wenn es das ist, was du mit "Variable wechseln" meintest, ja. Aber die Funktion kann auch unvollständige Strings verarbeiten.
  15. Ich hatte mal so was ähnliches: currentmsg ist ein std::string, msgqueue ist ein std::queue<std::string>. Beide müssen außerhalb der Funktion deklariert sein (z.B. als Instanzvariablen einer Klasse). Die Parameter der Funktion sind der Puffer, den recv gefüllt hat, und die Anzahl der empfangenen Bytes. void ProcessData(char *buffer, int size) { for( int i=0; i<size; ++i ) { if( buffer[i] == '\0' ) { msgqueue.push( currentmsg ); currentmsg = ""; continue; } currentmsg += buffer[i]; } }[/CODE] Die Queue kannst du dann z.B. mit einem anderen Thread abarbeiten. Dann solltest du aber die Zugriffe auf die Queue synchronisieren.
  16. Soweit ich weiß, gibt es da keine Funktion. Entweder suchst du nach dem Nullzeichen weiter, falls noch nicht alle empfangenen Bytes verarbeitet wurden, oder du nimmst ein anderes Trennzeichen. Oder du entwickest ein eigenes "Protokoll", mit einem Header, in dem steht, wie lang der nachfolgende String ist. Dann brauchst du gar kein Trennzeichen mehr.
  17. Prüf doch mal, ob die Anzahl der empfangenen Zeichen zur Anzahl der ausgegebenen Zeichen passt.
  18. Indem du mehrfach send aufrufst? Ehrlich gesagt, ich verstehe nicht ganz, wo das Problem liegt. Kannst du das ein wenig ausführlicher erklären?
  19. Was hast du gegen ++p? ANSI-C ist das auf jeden Fall. p ist ein Zeiger auf char, der am Anfang der Schleife auf das erste Element von cEingabe gesetzt wird. Der mittlere Ausdruck in der for-Klammer ist die Abbruchbedingung. Die Schleife endet, wenn dieser Ausdruck Null (oder false) wird. *p bedeutet hier einfach das Zeichen, auf das p gerade zeigt. Hier wird ausgenutzt, dass das Stringende durch ein Nullzeichen gekennzeichnet ist. Am Ende des Strings wird *p also Null, und die Schleife wird beendet.
  20. Ich weiß nicht, ob es in ANSI-C eine Konvertierungsfunktion gibt. Du könntest aber natürlich auch die ASCII-Codes in deinen String eintragen: const char* ungueltig = "\x84\x94\x81\x8e\x99\x9a\xe1;:-=\\/"; Oder dreh das ganze um und prüfe mit einem String, der alle gültigen Zeichen enthält.
  21. Ich vermute mal, dass dein Quellcode in ANSI codiert ist (hängt vom Editor ab), und die Eingabe in ASCII erfolgt. Und da ist der Code für 'ä' leider nicht derselbe. Du kannst das ausprobieren, indem du mal den String mit den ungültigen Zeichen ausgeben lässt.
  22. Das break bedeutet nur, dass die Schleife vorzeitig verlassen wird - es macht ja keinen Sinn, nach weiteren ungültigen Zeichen zu suchen. Das Programm läuft danach normal weiter. Du musst also nach der Schleife prüfen, was weiter geschehen soll. Das kann man machen, indem man das Auftreten des Fehlerfalls in einer bool-Variablen ablegt: bool nameInOrdnung = true; for( char* p = cName; *p; ++p ) { if( strchr( ungueltig, *p ) ) { printf("\nDer Name darf keine Umlaute enthalten!"); nameInOrdnung = false; break; } } if( nameInOrdnung ) { // weitere Verarbeitung...[/CODE]
  23. Ich hab's gerade mal ausprobiert: Ein Datenbankprojekt ist ein Projekt, mit dem eine Datenbank über die ODBC-Schnittstelle verwaltet werden kann. Visual Studio kann dann als Frontend benutzt werden (z.B. wenn man keinen Enterprise Manager / Query Analyzer verwendet). Mit dem Datenbank-Assistenten scheint man eine neue SQL-Server-Datenbank anlegen zu können. Das funktioniert aber bei mir irgendwie nicht.
  24. Es ist wahrscheinlich einfacher, wenn du alle ungültigen Zeichen in einen String packst, und danach jedes Zeichen im Eingabestring daraufhin untersuchst, ob es im String der ungültigen Zeichen auftaucht: const char* ungueltig = "äöüÄÖÜß;:-=\\/"; for( char* p = cEingabe; *p; ++p ) { if( strchr( ungueltig, *p ) ) { // ungültiges Zeichen gefunden // Fehlermeldung etc break; } } [/CODE]
  25. Noch ein Tipp zur Sicherheit: gets ist böse. Du kannst nie vor einem Pufferüberlauf sicher sein. Nimm fgets, da kannst du eine Obergrenze angeben.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...