Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Klar ist das möglich. Den Formatstring kannst du auch formatieren: CString f; int iNachkomma = 2; f.Format("%%01.%df", iNachkomma); CString s; s.Format(f, fWert );[/CODE] Einzige Besonderheit: Wenn hinterher ein Prozentzeichen im String stehen soll, musst du im Formatstring ein doppeltes Prozentzeichen angeben.
  2. Überleg doch mal genau, was der Code macht: Angenommen, deine Listbox hat drei Einträge, dann löscht zu zuerst den Eintrag mit dem Index 0, zwei bleiben übrig. Dann löschst du den Eintrag mit dem Index 1, bleibt einer. Dann willst du den Eintrag mit dem Index 2 löschen. Aber es ist ja nur noch einer drin, und der hat den Index 0
  3. Die Zeichen werden "normal" ausgegeben. Das Problem ist, dass du Zeichen benutzt, die nicht Bestandteil des ASCII-Zeichensatzes sind. Die sehen, je nach Codierung, anders aus. Und der Editor deiner Entwicklungsumgebung verwendet leider eine andere Codierung als die Konsole. Die Suchfunktion spuckt für "Umlaute" übrigens diesen Thread aus: http://forum.fachinformatiker.de/showthread.php?t=12579
  4. Nur als Info: Aus afxwin1.inl: _AFXWIN_INLINE HINSTANCE AFXAPI AfxGetResourceHandle() { ASSERT(afxCurrentResourceHandle != NULL); return afxCurrentResourceHandle; }[/CODE] Der Pfad mit Laufwerk F bezieht sich auf den Pfad, aus dem heraus die MFC bei Microsoft gebaut wurde. Diese Informationen stecken in der Debugversion der MFC noch drin. Man findet die MFC-Quellcodes in diesen Ordnern: C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include C:\Programme\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\src (VS.NET 2003, Standardinstallationspfad vorausgesetzt)
  5. Die Steuerelement beim Internet Explorer scheinen nicht nur keine Standard-Windowssteuerlemente zu sein, sondern gar keine Fenster im Windows-Sinn (beim aktuellen Firefox übrigens auch nicht), also kannst du da mit WinAPI-Funktionen nicht rankommen. Du kannst das aber auch jederzeit mit Spy++ nachprüfen.
  6. So, mein eigenes Haus ist fertig. :marine Wenn also jemand dringend einen Platz in der FI.de-Hütte braucht, bin ich gern bereit, auf meinen Schlüssel zu verzichten.
  7. Solange Du nicht für Dich selbst eindeutig formulieren kannst, wie bei Konflikten vorgegangen werden soll, brauchst Du gar nicht anfangen, irgendwas zu programmieren. Du musst für jeden Fall eindeutig angeben können, was passieren soll: Datensatz in DB1, aber nicht in DB2 -> Aktion? Datensatz in DB2, aber nicht in DB1 -> Aktion? Datensatz in DB1 und DB2, aber unterschiedlich -> Aktion? Wenn du kein Änderungslog oder eine andere Art der zeitlichen Verfolgung - z.B. Zeitstempel im Datensatz - hast (dann könntest du sagen, neu geht vor alt), bleibt dir eigentlich nur, eine der Datenbanken als "Master" festzulegen, und was darin steht, hat Vorrang.
  8. Lass mich raten: Visual C++ 6? #include <xutility> Oder einfach selbst machen: template <typename T> void swap(T& t1, T& t2) { T temp(t1); t1 = t2; t2 = temp; }[/CODE]
  9. #include <utility>
  10. Ich habe mal nachgesehen. Das Binärformat ist Big Endian (d.h. das höchstwertige Byte kommt zuerst), dann passt der Wert, denn dein Computer ist offenbar Little Endian: dez. 301989888 hex 12000000 dez. 18 hex 00000012 [/code] Du musst also die Reihenfolge der Bytes umdrehen: [CODE]unsigned int framebodysize = *(reinterpret_cast<unsigned int*>(aalbum)); char* p = reinterpret_cast<char*>(&framebodysize); std::swap(p[0], p[3]); std::swap(p[1], p[2]); Danach sollte in framebodysize der richtige Wert stehen. Alternativ könntest du auch die Funktion htonl benutzen, die sollte das gleiche machen. Das hier: if ( ( cache [ 0 ] == 'I' ) && ( cache [ 1 ] == 'D' ) && ( cache [ 2 ] == '3' ) ) kannst du übrigens einfacher so schreiben: if(0 == memcmp(&cache[0], "ID3", 3))
  11. "Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung. Wenn ich char c; statt int c; schreibe, funktioniert das Programm bei mir tadellos.
  12. Du könntest folgendes an Stelle der getline-Aufrufe an dein Programm anhängen: cin.clear (); cin.ignore(cin.rdbuf()->in_avail()); cin.get (); [/code] Nachtrag: c darf nicht int sein. char wäre richtig. Nur als Anmerkung: Du solltest <iostream> statt <iostream.h> verwenden. Beachte aber, dass dann alle Standardfunktionen und -objekte im Namespace std liegen.
  13. unsigned int framebodysize = *(reinterpret_cast<unsigned int*>(aalbum)); Wie gesagt, falls sizeof(unsigned int) == 4, und die "Endianness" deines Rechers dieselbe ist wie im Header.
  14. Ich glaube nicht, dass die Länge als Text im Header steht. Sehr wahrscheinlich ist sie binär. Da hilft atoi nicht weiter. Man braucht nur einen Zeiger auf den Anfang der Framebodysize, wandelt den in einen Zeiger auf einen 32-Bit-Ganzzahltyp um (je nach Plattform z.B. unsigned int) und dereferenziert diesen. Man muss aber auf Big-/Little-Endian-Konflikte achten.
  15. Wie lautet denn die erste Fehlermeldung? Die anderen könnten zum Teil Folgefehler sein.
  16. Keine Sorge, du nervst nicht. Könntest du mir die Quellcodedateien zuschicken, wenn das geheimhaltungstechnisch OK für dich ist? Dann würde ich es mal versuchen. Womöglich ist der Code unix-spezifisch und lässt sich unter Windows gar nicht kompilieren.
  17. Was willst du mit C#? Ist falsch. Visual C++ Projekte -> Win32 Projekt, dann bei Application Settings -> DLL. Das liegt aber mit Sicherheit nicht daran, dass MSVC die c-Dateien als C++ kompiliert. Probier es bitte zuerst mal mit den richtigen Projekteinstellungen aus.
  18. Sollte er eigentlich nicht... Könntest du dafür Beispiele bringen?
  19. FILETIME ftCreate = {0}; HANDLE fhandle = CreateFile( // usw. GetFileTime(fhandle, &ftCreate, 0, 0); CTime actual = CTime::GetCurrentTime(); CTime create(ftCreate); CTimeSpan diff = actual - create; LONGLONG days = diff.GetDays(); [/code]
  20. Mit "Anzeigen" hat das gar nichts zu tun. GetFileTime erwartet einen Zeiger auf eine FILETIME Struktur. Aus einer FILETIME Struktur kannst du dir eine Instanz von CTime bauen. Mit CTime::GetCurrentTime bekommst du die aktuelle Zeit. Wenn du zwei CTime-Instanzen voneinander abziehst, bekommst du ein CTimeSpan-Objekt, das die Dauer zwischen den beiden Zeiten enthält. Mit CTimeSpan::GetDays erhältst du schließlich die Anzahl der vollständigen Tage.
  21. Die MSDN Library sagt: th32DefaultHeapID This member is no longer used and is always set to zero. th32ModuleID This member is no longer used and is always set to zero. pcPriClassBase Base priority of any threads created by this process. Was den startenden Benutzer angeht, könnte GetUserObjectSecurity helfen. Da bin ich mir aber nicht sicher. Übrigens: Dienste werden im Windows-Taskmanager gar nicht angezeigt.
  22. Nicht fertig. Du musst die drei Schritte einzeln durchführen: 1. Dateien suchen (CFileFind) 2. Filtern (GetFileTime) 3. Löschen (CFile::Remove) P.S.: Verschoben nach C++: Compiler, IDEs, APIs
  23. Systemsteuerung -> Verwaltung -> Ereignisanzeige oder Start -> Ausführen -> eventvwr

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