Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Je detaillierter die Informationen sind, die du lieferst, desto besser kann man dir helfen. Siehe mein letzter Beitrag: Was meinst du damit? Ist das eine Schätzung? Ist es abwechselnd? Falls abwechselnd, klappt es beim ersten oder beim zweiten Mal? Hängt das Verhalten vom Feld oder vom Inputtyp ab? Was ist mit dem Rückgabewert von put_value? Ist der in Ordnung?
  2. So wird das nichts. Du musst zuerst aus dem ANSI-String einen Unicode-String machen. Den kannst du dann nach UFT8 konvertieren: char m[MAX_PATH]={0}; WCHAR w[MAX_PATH]={0}; CString text; int erg=0; strcpy(m, "ABCdefÄÖÜäöüéÉ"); erg=MultiByteToWideChar(CP_ACP, 0, m, -1, w, sizeof(w) / sizeof(WCHAR)); erg=WideCharToMultiByte(CP_UTF8, 0, w, -1, m, sizeof(m), 0, 0); text=m; [/CODE]
  3. Hast du den Debugger benutzt, um zu prüfen, ob das Programm auch wie erwartet in die if-Blöcke springt? Falls nicht, welches if schlägt fehl? Oder wird die Funktion vielleicht nur jedes zweite Mal überhaupt aufgerufen? Ist es genau jedes zweite Mal (also immer abwechselnd), oder ist das eine Schätzung? Das sind alles Informationen, die du liefern musst, bevor dir jemand sinnvoll helfen kann. Einfach nur den Code hinzuklatschen, noch dazu ohne Code-Tags, bringt bei logischen Fehlern nicht viel.
  4. LabelWrap bezieht sich nur auf die Symbol-Ansicht des ListView. In der Report-Ansicht (also der mit den Spalten) unterstützt das Windows-Standard-ListView-Steuerelement keinen Umbruch und keinen mehrzeiligen Text.
  5. Mit Wait ist es ok. Ich war mir nicht sicher, ob dir klar war, dass deine Threads sofort wieder beendet werden, wenn main beendet ist. Wenn es dir nur um die Zeitmessung geht, und du sowieso nur unter Windows zu Gange bist, brauchst du keine Threads. Du kannst mit GetTickCount aus windows.h die verstrichenen Millisekunden seit dem Start des Systems heraus finden. Wenn du diesen Wert zweimal holst und die Werte voneinander abziehst, hast du den zeitlichen Unterschied der Aufrufe. Beachte aber, dass die Auflösung von GetTickCount auch nur bei etwa 50 ms liegt. Wenn du es genauer brauchst, musst du das wieder anders machen. Stichwort PerformaceCounter. Wenn es nicht nur um die Zeitmessung geht, dann solltest du dir die üblichen Synchronisierungsobjekte anschaufen: Critical Section, Mutex, Semaphore, Event. Macht ja nichts
  6. Dazu musst du zuerst die Formel nach x auflösen. Was danach stehen bleibt, kannst du praktisch 1:1 als Code übernehmen.
  7. Dazu musst du sagen, was gegeben ist, und was errechnet werden soll.
  8. MSDN sagt: Du musst also einen Zeiger übergeben, der auf auf eine DWORD-Variable zeigt. Dein Zeiger ist uninitialisiert und zeigt damit irgendwo hin, aber nicht auf eine exisiterende DWORD-Variable. Eigentlich müsste dir das mit einer Schutzverletzung um die Ohren fliegen. DWORD SerNum; GetVolumeInformation(CDDrive, CD_Name, MAX_PATH, &SerNum, NULL, NULL, NULL, NULL); [/CODE]
  9. Mein Fehler, sorry Hier darf als letzter Parameter nicht die Gesamtlänge, sondern nur die Länge des letzten Strings stehen, in deinem Fall also 21.
  10. ReleaseBuffer ist void, gibt also nichts zurück. return str; sollte schon reichen. Die 17 musst du erst ausrechnen, falls die Strings test, ste und sst keine feste Länge haben (Länge von test + Länge von ste + Länge von sst + Länge von "ende" + 3 für die drei Nullzeichen dazwischen).
  11. Im oberen Preisbereich würde auch eine 2,5-Zoll-Festplatte samt USB2-Gehäuse in Frage kommen. Passt einfach mehr drauf.
  12. "Geht nicht" ist keine ausreichende Fehlerbeschreibung. Was bedeutet "geht nicht"? Wie sieht dein Code aus?
  13. Bei mir funktioniert es. Zeig doch mal deinen Code.
  14. Du kannst keine der CString-Funktionen benutzen, wenn du so etwas machen willst. Das schließt auch den operator+ ein. Folgendes funktioniert: CString str,test,ste,sst,ende; test="test";ste="ste";sst="sst";ende="ende"; LPSTR p = str.GetBuffer(17); memset(p, 0, 17); memcpy(p, test, test.GetLength()); p += test.GetLength() + 1; memcpy(p, ste, ste.GetLength()); p += ste.GetLength() + 1; memcpy(p, sst, sst.GetLength()); p += sst.GetLength() + 1; memcpy(p, ende, ende.GetLength()); str.ReleaseBuffer(17); [/CODE]
  15. Nein, eigentlich nicht. Die Nullzeichen zwischen den Teilstrings bekommst du mit Format nicht rein. CString str; LPSTR p = str.GetBuffer(17); memcpy(p, "test\0ste\0sst\0ende", 17); str.ReleaseBuffer(17);[/CODE] Das wiederum brauchst du gar nicht. CString hat einen Konvertierungsoperator dafür.
  16. Im zweiten Beitrag
  17. Drei Tipps von mir: 1. Wenn deine main-Funktion beendet ist, endet auch dein Programm. 2. Du kannst mit Sleep keine genaue Zeitsteuerung hinbekommen. Sleep sorgt dafür, dass der aufrufende Thread frühestens nach der angegebenen Zeitspanne wieder ausgeführt wird. Es kann aber durchaus auch später sein - bei Dir wird es immer später sein. Beim Multitasking werden ja erstmal die anderen Threads ausgeführt. Wenn die unter Volllast laufen, nutzen sie ihre ganze Zeitscheibe aus, bis der Windows-Scheduler auf den nächsten Thread wechselt. Allgemein ist die Auflösung der Sleep-Anweisung maximal nur so groß wie die Zeitscheibe des Betriebssystems. 3. Wenn du mit Threads zu tun hast, verlässt du die Welt von Standard-C++. Daher verschoben: -> C++: Compiler, IDEs, APIs
  18. Wenn mscoree.dll fehlt, bedeutet das, dass du ein .NET-Programm auf einem Rechner auszuführen versuchst, auf dem das .NET-Framework nicht installiert ist. Siehe auch: http://support.microsoft.com/?kbid=316091
  19. Du musst den Compiler anweisen, die Multithreaded-Version der Laufzeitbibliothek zu benutzen. Das sollte mit einem Kommandozeilenschalter (bei MSVC: /MT) gehen, oder über die Projekteinstellungen deiner Entwicklungsumgebung. Und weil das kein Standard-C++-Problem ist: Verschoben: -> C++: Compiler, IDEs, APIs
  20. Du kannst dem zweiten Dialog doch einfach einen Zeiger auf das Quell-Treecontrol übergeben und die Daten in OnInitDialog kopieren.
  21. Es gibt da keine vorgefertigte Funkion. Du musst die Items des Quellbaums "zu Fuß" durchgehen und in den anderen Baum kopieren. Am einfachsten geht das rekursiv. Benutzt du die MFC?
  22. Du darfst getauscht nicht bei jedem Schleifendurchlauf auf false setzen, sondern nur einmal, vor der Schleife. Sonst überschreibst du den true-Wert von einem vorausgegangenen Durchlauf ja wieder. Dadurch wird der Vorgang nur wiederholt, wenn das letzte und vorletzte Element vertauscht werden mussten.
  23. Verschoben: --> Delphi/RPG+CL/C#/Sonstige
  24. Alternativ kann man die Zahl auch als Bruch darstellen: 0.45 = 45/100 = 9/20. Nur wenn der Nenner eine Potenz von 2 ist, lässt sich die Zahl als float/double ohne Fehler speichern.
  25. Die symbolischen Konstanten des enums sind nur zur Compilezeit bekannt. Durch den Cast von int nach months beim Aufruf von function hebelst du die Compilezeit-prüfung aus. Eine Laufzeitprüfung findet grundsätzlich nicht statt.

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