Alle Beiträge von Klotzkopp
-
Cooles Online Rollenspiel
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.
-
Datenbanken synchronisieren
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.
-
C++ String zu Int
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]
-
C++ String zu Int
#include <utility>
-
C++ String zu Int
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))
-
Kleiner Taschenrechner
"Funktioniert nicht" ist keine ausreichende Fehlerbeschreibung. Wenn ich char c; statt int c; schreibe, funktioniert das Programm bei mir tadellos.
-
Kleiner Taschenrechner
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.
-
C++ String zu Int
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.
-
C++ String zu Int
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.
-
Erstellen einer .dll aus .c-Dateien
Wie lautet denn die erste Fehlermeldung? Die anderen könnten zum Teil Folgefehler sein.
-
Erstellen einer .dll aus .c-Dateien
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.
-
Erstellen einer .dll aus .c-Dateien
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.
-
Erstellen einer .dll aus .c-Dateien
Sollte er eigentlich nicht... Könntest du dafür Beispiele bringen?
-
MFC - Dateien löschen
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]
-
MFC - Dateien löschen
CreateFile
-
MFC - Dateien löschen
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.
-
Eigener Taskmanager
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.
-
MFC - Dateien löschen
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
-
nach Fehler untersuchen
Systemsteuerung -> Verwaltung -> Ereignisanzeige oder Start -> Ausführen -> eventvwr
-
Probleme bei der Ansteuerung der Seriellen Schnittstelle mit ActiveX
Ein wenig Code wäre hier sinnvoll.
-
Prüfen ob Datei Existiert
Der eigentlich richtige Weg ist der, dass du das enthaltende Verzeichnis nach der Datei durchsuchst. CFileFind hilft dir weiter. Meist reicht aber auch die "Quick & Dirty"-Lösung: Du versuchst einfach, die Datei zu öffnen, ohne sie zu erzeugen (CFile) . Wenn das klappt, ist sie da. Leider gilt der Umkehrschluss nicht: Wenn du sie nicht öffnen kannst, kann sie trotzdem da sein, aber von anderer Stelle mit exklusivem Zugriff geöffnet sein. Zwei Anmerkungen zu deinen Fragen: 1. Du solltest immer erwähnen, dass du die MFC benutzt. Ich weiß das inzwischen, aber normalerweise müsste man immer nachfragen. 2. Dein ständiges Fragen nach Beispielcode könnte den Eindruck erwecken, dass du nicht willens bist, dir selbst Informationen zu besorgen. Gerade für die MFC gibt es in der MSDN-Library Unmengen an Beispielcode. Wer durchblicken lässt, dass er gern alles fertig auf dem Tablett serviert hätte, muss mit verminderter Motivation der potentiellen Helfer rechnen.
-
Text-Element (Label) formatieren
Klar kann man. Man darf nur nicht die vorbelegte Steuerlement-ID (IDC_STATIC) verwenden, dann kann man mit GetDlgItem drankommen und dann SetFont benutzen.
-
Eintrag aus Kombinationsfeld auslesen
Wenn es immer ".cfg" ist, reicht es doch, wenn du die letzten vier Zeichen abschneidest: m_strBeschreibung = m_strBeschreibung.Left(m_strBeschreibung.GetLength() - 4);[/CODE]
-
Eintrag aus Kombinationsfeld auslesen
Mit CString::ReverseFind kannst du die Position des letzten Punktes ermitteln, und dann mit CString::Left den Teilstring rausholen.
-
Eintrag aus Kombinationsfeld auslesen
CComboBox::GetLBText. Wenn du den Text im Eingabefeld haben willst (je nach Stil muss der ja nicht in der Liste vorkommen), nimm GetWindowText.