Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. CListCtrl::SetColumnWidth
  2. Dann kannst du sowieso nicht in der Datei ersetzen, denn dazu müssten die Daten, die dahinterliegen, verschoben werden, das geht nicht. Liest du eigentlich, was ich schreibe? Die Anzahl sagt, gerade bei Texten, nicht viel aus. Es geht um die Länge. 200 Strings mit 10 Zeichen sind schneller geschrieben als 200 Strings mit 10 Millionen Zeichen. Aber da du sowieso alles neu speichern musst, hat sich das ja erledigt
  3. Es gibt Events, wenn der Benutzer etwas ändert. Ob aber hinterher nicht doch wieder derselbe Text drin steht, kannst du damit nicht herausfinden. Ist auch nicht sinnvoll. Bei einem ordentlichen Design (bei dem UI-Elemente nicht als Datenspeicher missbraucht werden), hast du sowieso den ursprünglichen Wert irgendwo festgehalten und kannst den problemlos mit dem Wert vergleichen, der im Eingabefeld steht. Leider hast du immer noch nicht verraten, ob deine Variablen veränderliche Längen haben, und um wieviele Daten es ungefähr geht. Aber ich denke, mit dem kompletten Neuschreiben bist du besser bedient.
  4. Die Anzahl sagt nicht viel aus. Handelt es sich um Strings? Wie lang sind die so im Schnitt? Hast du gelesen, dass Ersetzen gar nicht geht, wenn die Länge des geänderten Bereichs variabel ist? Alles neu schreiben, unabhängig davon, ob es sich geändert hat. Indem du dir den "alten" Wert merkst und mit dem neuen vergleichst.
  5. Abgesehen davon, dass das nicht geht, wenn du Daten mit variabler Länge hast: Wenn es nicht gerade um große Datenmengen geht, lohnt es den Aufwand nicht, wenn man nur die geänderten Daten ersetzt. Um wieviel geht es denn?
  6. Dann lautet die Antwort: explorer.exe
  7. Nicht ganz Wenn es sich um eine Windowsanwendung handelt, wird die ausgeführt. Bei einer Konsolenanwendung wird das Programm in einer Konsole gestartet (welche das ist, hast du geschrieben). Ansonsten versucht Windows, über die Dateiendung eine passende Anwendung zu finden. Ist das erfolgreich, wird die Datei damit gestartet. Falls nicht, wird der "Ausführen mit"-Dialog (bzw. der "passende Anwendung suchen"-Dialog) angezeigt.
  8. Klotzkopp

    [C]: Speicherfehler

    Headerdateien werden gar nicht kompiliert. Der Inhalt einer Headerdatei wird genau da in die .cpp-Datei hineinkopiert, wo die #include-Direktive steht, bevor die .cpp-Datei kompiliert wird. Ob das also eine (berechtigte) Fehlermeldung wegen Makro-Neudefinition erzeugt, hängt davon ab, ob dein #define vor oder nach der #include-Direktive steht.
  9. Klotzkopp

    [C]: Speicherfehler

    War daran irgendwas unklar?
  10. Klotzkopp

    [C]: Speicherfehler

    Das wird nicht funktionieren. Nach #ifdef/#ifndef darf nur ein einzelner Bezeichner stehen. Gar nicht. Die Ausdrücke für diese Präprozessordirektiven dürfen nur Ganzzahlen und (Einzel-)Zeichenkonstanten beinhalten. Abgesehen davon müsstest du == benutzen.
  11. Klotzkopp

    [C]: Speicherfehler

    Nein, du irrst dich nicht. Das geht tatsächlich nicht mit #ifdef/#ifndef. Mein Fehler.
  12. Das bezieht sich nur auf die Erweiterung. Es ist ja in Windows nicht einmal möglich, Dateien ohne Erweiterung dauerhaft mit einer Anwendung zu verknüpfen.
  13. Hast du die Anmerkungen zu GetModuleHandle in der MSDN Library gelesen? Geht es mit GetModuleHandleEx?
  14. Klotzkopp

    [C]: Speicherfehler

    Kein Unterschied, das ist gleichbedeutend.
  15. Noch mal zur Klarstellung: Funktioniert es, solange du aus Visual Studio heraus startest, oder funktioniert nur die Debug-Version, egal von wo du die startest?
  16. Klotzkopp

    [C]: Speicherfehler

    In meiner stdlib.h steht: #ifndef NULL #ifdef __cplusplus #define NULL 0 #else #define NULL ((void *)0) #endif[/code] Sie ist aber auch Bestandteil von C++. Der Header heißt zwar im C++-Standard <cstdlib>, aber der C-Header funktioniert unter MSVC auch noch.
  17. Na dann schau dir im MFC-Quellcode an, was CWinApp::RegisterShellFileTypes so macht. Vielleicht ruft die Methode eine ähnliche Funktion der WinAPI auf (mir ist zwar keine solche bekannt, aber das muss ja nichts heißen), oder die Methode hantiert selbst in der Registry. Was die MFC kann, kannst du auch
  18. Klotzkopp

    [C]: Speicherfehler

    "Frei" ist in dem Sinne keine Adresse. malloc "beschafft" Speicher vom Heap. Aber in C++ nimmt man dafür eigentlich new/delete, das hat den Vorteil, dass man Konstruktoren und Destruktoren verwenden kann. In C darfst du globale Variablen nur mit Konstanten [i]initialisieren[/i], d.h. du kannst z.B. nicht mit dem Rückgabewert von malloc initialisieren. Das geht nur in C++.
  19. Klotzkopp

    [C]: Speicherfehler

    MSVC? Der kann auch C. Er richtet sich da nach der Dateiendung. Dein Code ist aber kein C. Du initialisierst globale Variablen mit nichtkonstanten Werten, du benutzt NULL für integrale Datentypen und an einigen Stellen fehlt "struct". Ein C-Compiler wird dir das um die Ohren hauen. Den cast in deinem NEW_ADDRESS-Makro brauchst du nur, weil das C++ ist. In C wäre der unnötig (und eventuell sogar gefährlich).
  20. Klotzkopp

    [C]: Speicherfehler

    rate ich dringend ab. Schreib besser eine Funktion dafür. Und warum benutzt du eigentlich malloc und free, wenn du sowieso C++ erzeugst?
  21. Ja. Falls du auch wissen willst, wie: CFile::SetStatus. Es wäre vermutlich hilfreich, wenn du dir selbst die Member von CFile etwas genauer ansiehst. Dann brauchst du nicht wegen jeder neuen Eigenschaft nachzufragen.
  22. Die Länge einer Datei bekommst du mit CFile::GetLength. Name und Typ brauchst du nicht zu "lesen", die brauchst du doch schon, um die Datei zu identifizieren. Umbenennen kannst du eine Datei mit CFile::Rename. Die Größe der Datei kannst du nicht ändern, ohne den Inhalt zu ändern. Wozu auch?
  23. CWinApp::RegisterShellFileTypes
  24. Klotzkopp

    [C]: Speicherfehler

    Ich nehme mal an, dass du auf einem 32Bit-Windows mit MSVC unterwegs bist. Da hat ein short int zwei Byte, und ein int vier. scanf mit %d geht von einem int aus, also wird die Adresse, die du mitlieferst, als Zeiger auf einen vier Byte großen Speicherbereich interpretiert, und der eingegebene Wert da rein geschrieben. Von diesen vier beschriebenen Bytes gehören aber nur die ersten beiden zu Wahl, die anderen beiden könnten theoretisch zu einer anderen Variablen gehören. Der Wert, der ihn Wahl landet, ist der gleiche, weil dein Windows Little-Endian ist.
  25. Klotzkopp

    [C]: Speicherfehler

    Deklarier Wahl bitte mal als int, nicht als short int. P.S.: Hättest du diese Meldung früher gebracht, hätte ich dir viel schneller helfen können

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