Alle Beiträge von Klotzkopp
-
Anzahl von Datein in einem Verzeichnis
Mein Reden. So etwas gehört in Beitrag Nummer 1. Woher willst du das wissen? Weißt du, welche Gedanken sich jeder gemacht hat, der deine Frage gelesen hat? Auch die, die nicht geantwortet haben? Ja, nachdem dich Bubble darauf aufmerksam gemacht hat, dass das z.B. unter Windows so geht. Und was, wenn Bubble dich darauf hingewiesen hätte, dass das unter Linux z.B. mit glob geht? Das hat nun gar nichts mit dem Problem zu tun. Deine Lösung verwendet nicht mal MFC. Die MFC-Lösung für dein Problem (CFileFind) gibt es z.B. für CE nicht. Für multiple Satzzeichen besteht auch kein Anlass. Es bleibt dabei: Solche Informationen gehören in den ersten Beitrag. Weitere Diskussion darüber bitte nur per PN.
-
Anzahl von Datein in einem Verzeichnis
Es wäre sehr hilfreich gewesen, wenn du das vorher gesagt hättest. Damit bist du hier nämlich nicht nur im falschen Forum. Es ist ziemlich unhöflich, wenn man erst mal die Helfer in alle möglichen Richtungen laufen lässt, und hinterher sagt, dass man etwas plattformspezifisches braucht.
-
CListCtrl Spaltenbreite nach Inhalt anpassen?
CListCtrl::SetColumnWidth
-
Frage zu CFile und CEdit!
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
-
Frage zu CFile und CEdit!
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.
-
Frage zu CFile und CEdit!
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.
-
Frage zu CFile und CEdit!
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?
-
Frage nach "Ausführen - .EXE"???
Dann lautet die Antwort: explorer.exe
-
Frage nach "Ausführen - .EXE"???
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.
-
[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.
-
[C]: Speicherfehler
War daran irgendwas unklar?
-
[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.
-
[C]: Speicherfehler
Nein, du irrst dich nicht. Das geht tatsächlich nicht mit #ifdef/#ifndef. Mein Fehler.
-
Programm mit bestimmten Dateien verbinden
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.
-
Transparentes Windows
Hast du die Anmerkungen zu GetModuleHandle in der MSDN Library gelesen? Geht es mit GetModuleHandleEx?
-
[C]: Speicherfehler
Kein Unterschied, das ist gleichbedeutend.
-
Transparentes Windows
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?
-
[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.
-
Programm mit bestimmten Dateien verbinden
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
-
[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++.
-
[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).
-
[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?
-
Details von eine Datei
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.
-
Details von eine Datei
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?
-
Programm mit bestimmten Dateien verbinden
CWinApp::RegisterShellFileTypes