Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Wenn UNICODE nicht definiert ist (TCHAR ist also char), braucht man keinen Cast. Und falls doch, (TCHAR ist wchar_t), wird ein Cast zwar dazu führen, dass der Compiler sich nicht mehr beschwert, funktionieren wird das aber nicht. Unter Windows kann man WideCharToMultiByte verwenden. Und wenn man Zugriff auf die MFC oder ATL hat, hat man es ganz einfach: ATL and MFC String Conversion Macros (ATL)
  2. // wfd ist deine WIN32_FIND_DATA-Struktur SYSTEMTIME st; FileTimeToSystemTime( &wfd.ftCreationTime, &st ); [/code] [code] sprintf( neu, "%04d%02d%02d%02d%02d_%s", st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, wfd.cFileName );
  3. - Verzeichnis durchsuchen (FindFirstFile/FindNextFile) - Umwandeln von FILETIME in SYSTEMTIME (FileTimeToSystemTime) - In String formatieren (sprintf) - Umbenennen (rename) Bei welchem Schritt hakt's denn?
  4. Du bist am Zug. Du musst dich entscheiden: - boost::filesystem - POSIX - WinAPI Das heißt, wenn du überhaupt noch daran interessiert bist, das selbst zu machen. Ansonsten wirst du wohl warten müssen, bis sich jemand findet, der das für dich macht.
  5. In Standard-C bzw. -C++ wird das nicht machbar sein, weil beide weder Verzeichnisse durchsuchen noch das Erstellungsdatum einer Datei ermitteln können. Ein halbwegs portables C++-Programm könntest du mit boost::filesystem hinbekommen. Ansonsten wirst du dich wohl entweder auf POSIX oder WinAPI festlegen müssen.
  6. fflush (CRT) Da steht: If the stream is open for input, fflush clears the contents of the buffer. [...] // fflush on input stream is an extension to the C standard
  7. Das hat jetzt nicht direkt mit deiner Frage zu tun, aber du hast da ein Speicherleck. Der Speicher, den du in my_itoa mit malloc anforderst, gibst du nirgendwo wieder frei. Und warum stellst du den neuen Dateinamen nicht einfach auf einen Rutsch mit einer sprintf-Anweisung zusammen? Bist du da eigentlich unter Windows oder unter Unix/Linux zu Gange? P.S.: - gets ist böse, weil du keine Möglichkeit hast, einen Pufferüberlauf zu verhindern. - fflush(stdin) bewirkt undefiniertes Verhalten. - system("PAUSE") ist suboptimal.
  8. GetFocus ist eine Klassenmethode (also static) von CWnd. Es ist zwar möglich, GetFocus über ein bestimmtes Fensterobjekt aufzurufen, aber das weder nötig, noch hat es irgendeine Auswirkung. Du solltest immer CWnd::GetFocus benutzen, um das auch kenntlich zu machen. So kannst du prüfen, ob Edit1 den Focus hat: if( CWnd::GetFocus() == &Edit1 )
  9. Dieser Eintrag allein hilft nicht viel weiter. Es sieht aber so aus, als ob du mit einem CWnd-Objekt hantieren würdest, das noch gar nicht erstellt wurde. Zumindest lässt mich das der an _AfxDeferClientPos übergebene Nullzeiger vermuten. Außerdem wären (wie bereits gesagt) die Meldung und die Sourcecodeposition der fehlgeschlagenen Assertion sowie der an dieser Stelle stehende Code interessant.
  10. Möglicherweise hat der Autor einen C++-Compiler benutzt. In C++ kann man Funktionen überladen, d.h. mehrere Versionen mit gleichem Namen, aber unterschiedlichen Parameterlisten anlegen. In C geht das allerdings nicht, darum hat so etwas IMHO in einem C-Buch nichts verloren.
  11. Es gibt bereits eine Funktion namens remove in der Standardbibliothek. Diese Funktion dient zum Löschen von Dateien, und ist in stdio.h deklariert. Du musst deine Funktion anders nennen. Und wenn das so in deinem Buch steht, solltest du dir ein besseres suchen
  12. Beschreib doch mal deine Lösungen. Vielleicht ist da ja schon eine richtige dabei
  13. Bitte nicht "wohl" und "anscheinend". Gib die Fehlermeldung genau so wieder, wie sie da steht. Bei einer Assertion bitte die genaue Stelle im Code, so wie einen Ausschnitt des Code selbst, rund um die Assertion. Hilfreich ist außerdem der Callstack (Aufrufliste) zum Zeitpunkt der fehlgeschlagenen Assertion.
  14. Möglicherweise, wenn du eine etwas bessere Fehlerbeschreibung lieferst als "igrendwie bekomme ich es nicht am laufen". Grundsätzlich ist es aber Unsinn, die CSplitterWnd-Objekte als lokale Variablen in eine Methode anzulegen. Der Präfix m_ sollte dir signalisieren, dass das wohl Member sein sollen.
  15. Diese Abfrage ist unsinnig, weil die geprüfte Bedingung immer wahr ist. Egal welchen Wert iVorher hat, es ist immer ungleich einem Leerzeichen ODER ungleich einem Tab. Für ein Tab-Zeichen ist der erste Teilausdruck wahr, für ein Leerzeichen der zweite. Für alle anderen sind beide wahr. Du meinst vermutlich &&, nicht ||.
  16. Ja, aber diese Klasse wirfst du doch wieder als Exception. Ich habe immer noch nicht verstanden, warum du das tust, und die Frage hast du bisher auch nicht beantwortet. Aber wenn du zu diesem throw kein passenden try/catch hast, dann beendet sich dein Programm. Mal bildlich gesprochen: Die _com_error-Exception ist wie ein Stein, der auf eine Fensterscheibe zufliegt. Was du machst, ist, den Stein zu fangen (ok), in hübsches Papier zu wickeln (auch ok), und dann wieder in Richtung Scheibe zu werfen (wozu :confused:). Wenn da kein weiterer Fänger ist, kracht es, egal wie hübsch das Papier ist.
  17. Das ist ja schön und gut. Dazu reicht ein catch aus. Aber warum überhaupt wirfst du dann wieder eine Exception? Wozu das throw?
  18. Das eine hat mit dem anderen nichts zu tun. Die Importdirektive wirkt sich zur Compilezeit aus, nicht zur Laufzeit. :confused: Das steht doch auf der MSDN-Seite, auf die ich dich hingewiesen habe.
  19. Du kannst auch eine .EXE-Datei mit dem Object Browser öffnen. COM-Automation von Hand? Warum gerade der schwierigste Weg? Warum nicht mit #import?
  20. Und wo ist das try/catch zu diesem throw? Wenn du diese MyException, die du da wirfst, nirgends fängst (d.h, wenn dieses throw nicht in einem try-Block steckt), dann ist doch logisch, dass sich dein Programm beendet. Und da MyException von keiner Standardexceptionklasse abgeleitet ist, ist es für VS natürlich "unbekannt".
  21. Öffne die .OLB/.TLB mit Visual Studio. Das sollte den Objekt Browser anwerfen. Du möchtest ein Beispiel für die Benutzung der Automatisierungsschnittstelle eines Programms, sagst aber nicht, welches es ist? Das könnte schwierig werden. Wie bist du denn nun vorgegangen? Hast du eine import-Direktive benutzt, oder hast du den Klassenassistenten Wrapper erstellen lassen?
  22. Ich verstehe nur noch Bahnhof. Was hat diese andere Exception damit zu tun? Wo (und wie) fängst du diese MyException, die du da wirfst?
  23. "Schmiert mit unbekannte Exception ab" ist keine ausreichende Fehlerbehandlung. Wie versuchst du die Exception denn zu fangen? Tust du das überhaupt?
  24. Das zeigt das Programm ja auch an. Falls du meinst, dass sich das Konsolenfenster schließt: Das ist auch normal. Wenn du das nicht willst, musst du am Ende Code einfügen, der dafür sorgt, dass sich das Programm nicht sofort beendet. Du kannst z.B. noch einmal etwas mit scanf einlesen. Das \n muss schon in den String.
  25. Du musst die Abfragefunktion natürlich aus dem SlaveThread heraus aufrufen. Das sollte den Rest des Programms nicht beeinflussen. Zumindest nicht, wenn nicht noch ein Bug drin ist.

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...