-
Gesamte Inhalte
9912 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
3
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Klotzkopp
-
1 HE = Höheneinheit = 44,45 mm = 1,75 Zoll.
-
@wasweißich: Das ist ein und dasselbe, es gibt nicht wirklich einen Unterschied zwischen '\0' und (char)0. @gugelhupf: ... unsigned int len=strlen(Eingabe); [COLOR=red]char szTemp[2]; szTemp[1] = 0;[/COLOR] if (len==0) cout << Fest; else { for (counter=0;counter<len;counter++) { [COLOR=red]szTemp[0] = Eingabe[counter];[/COLOR] strcpy(NeuFest,Fest); // es soll sein: NeuFest=Fest+Zeichen !!?? strcat(NeuFest,[COLOR=red]szTemp[/COLOR]); ... [/CODE] Mir ist allerdings nicht klar, was Du mit "NeuEingabe=Eingabe ohne Zeichen" meinst. Soll das Zeichen herausgeschnitten werden? Oder soll alles bis zu diesem Zeichen abgeschnitten werden? Nachtrag: Da das eine rekursive Funktion ist, solltest Du die Arrays besser auf dem Heap anlegen.
-
Zunächst mal kannst Du einen char nicht mit einem Stringliteral initialisieren. Selbst wenn das ein Tippfehler war, und da "char* str" steht, darfst Du nichts anhängen, weil kein Speicher für das zusätzliche Zeichen geholt wurde. Zweitens musst Du zum Anhängen strcat verwenden. Allerdings akzeptiert strcat kein char als Argument. Und wenn Du die Adresse von zeichen angibst, hast Du ein dickes Problem, weil an der Speicherstelle danach mit sehr hoher Wahrscheinlichkeit kein Nullbyte steht. strcat fügt aber bis zum Stringendezeichen an. Das sollte es tun: char str[10]; strcpy( str, "Test" ); char zeichen[2]; zeichen[0] = 'G'; zeichen[1] = 0; strcat( str, zeichen );
-
Aus gegebenem Anlass wärme ich dieses Thema wieder auf: Es gibt einen neuen Trailer! Die erwartungsvolle Fangememeinde möge sich an die gleiche Adresse wenden, die schon ganz oben steht . Ach ja, die Full-Screen-Version hat etwa 40 MByte. Und man sieht ganz kurz einen Ent, wenn auch nur die untere Hälfte.
-
Du brauchst für jede "Art" von Dokument eine Instanz von CMultiDocTemplate. Darin gibst Du die Frame-, View- und Dokumentklasse an. Hier ist ein Beispiel.
-
Zugriff auf serielle Schnittstelle
Klotzkopp antwortete auf Comroader's Thema in C++: Compiler, IDEs, APIs
Die Suchfunktion liefert diese drei Threads, wenn man dieses Forum nach "COM1" durchsucht. Der erste ist Deiner, aber die anderen beiden sollten Dir weiterhelfen. CreateFile ist m.W. im BCB verfügbar. -
Bitte die Boardregeln beachten, insbesondere Punkt 9. Danke. --> Thema geschlossen.
-
CStdioFile LesenDatei, SchreibenDatei, RestDatei; LesenDatei.Open( "c:\\datei1.txt", CFile::modeRead ); SchreibenDatei.Open( "c:\\datei2.txt", CFile::modeWrite | CFile::modeCreate ); RestDatei.Open( "c:\\datei3.txt", CFile::modeWrite | CFile::modeCreate ); CString strZeile; while( LesenDatei.ReadString( strZeile ) ) { CString strDaten = strZeile.Left( 15 ); strDaten += strZeile.Mid( 16, 4 ); strDaten += strZeile.Mid( 21, 3 ); strDaten += strZeile.Mid( 25, 9 ); SchreibenDatei.WriteString( strDaten ); CString strRest = strZeile.Mid( 34 ); RestDatei.WriteString( strRest ); } LesenDatei.Close(); SchreibenDatei.Close(); RestDatei.Close();[/CODE]
-
JUSPEPHI16196666500W 0002790 02705 JUSP 123456789012345678901234567890123456789012 (Abzähl-Zeile)[/CODE] Habe ich das so richtig verstanden? 1 bis 15: JUSPEPHI1619666 17 bis 20: 500W 22 bis 24: [Leerzeichen]00 26 bis 34: 2790[Leerzeichen][Leerzeichen]027 Rest: 05[Leerzeichen][Leerzeichen]JUSP
-
Du solltest uns wirklich mal sagen, was genau Du prüfen willst. Niemand wird anhand dieser Zeile erkennen können, was hier relevante Daten sind. Haben die Zeilen einen einheitlichen Aufbau, durch feste Feldgrößen, Delimiter oder Schlüsselworte?
-
1. Wenn pfad ein char-Array oder char* ist, dann darfst Du bei scanf nicht die Adresse angeben. 2. Wenn Du bei fopen pfad in Anführungszeichen setzt, hält der Compiler das für ein Literal, nicht für eine Variable. Also: scanf("%s", pfad); datei1 = fopen( pfad, "r");
-
CStdioFile datei1; if( !datei1.Open( "c:\\datei1.txt", CFile::modeRead ) ) { MessageBox( "Konnte datei1 nicht öffnen!" ); return; } CStdioFile datei2; if( !datei2.Open( "c:\\datei2.txt", CFile::modeWrite | CFile::modeCreate ) ) { MessageBox( "Konnte datei2 nicht öffnen!" ); return; } CString strZeile; while( datei1.ReadString( strZeile ) ) { datei2.WriteString( strZeile ); } datei1.Close(); datei2.Close(); [/CODE]
-
Für Windows gibt es die Image Mastering API (IMAPI), die aber wohl nur unter XP und .NET Server verfügbar ist. Hier gibt es eine Beispielanwendung: http://www.gotdotnet.com/team/cplusplus/samples/cd%20burning.zip Die Beispielanwendung ist MFC .net unmanaged C++.
-
Nochmal der wichtige Hinweis: nicht <=5 entweder <5 oder <=4
-
Weitere Anmerkungen: Zulässige Indizes für Arrays gehen von 0 bis (Größe - 1), nicht von 1 bis Größe. Hier also von 0 bis 4. Bei einer verschachtelten Schleife dieser Art muss die Zuweisung nur einmal auftauchen, in der innersten Schleife. Es gibt keinen Grund, true und false in Klammern zu setzen. Du muss irgendwie sicherstellen, dass die drei m_Eingabe-Variablen gültige Werte enthalten. Möglicherweise hast Du das im Klassenassistenten gemacht, kann ich nicht sagen. Wenn diese Methode nicht den Dialog beenden soll, dann solltest Du einen anderen Namen wählen, anstatt OnOK zu überschreiben, ohne CDialog::OnOK() aufzurufen.
-
CString hat einen Umwandlungsoperator für const char*, also kannst Du einen CString als Argument z.B. für atoi benutzen: int n = atoi( deinCString );
-
Brauche Informationen zu MFC-Klassen
Klotzkopp antwortete auf SwordMaster's Thema in C++: Compiler, IDEs, APIs
Hallo SwordMaster, und willkommen auf dem Board Wir haben hier zwei Programmierforen, die sich mit C++ beschäftigen, eines für die "Puristen" (Standard C/C++) und eins für die vielfältigen APIs, unterschiedlichen Entwicklungsumgebungen und Compiler. Da Deine Frage die MFC betrifft, geht sie über die Standards von C und C++ hinaus, drum verschiebe ich sie ins passende Forum. Außerdem wäre es gut, wenn Du beim nächsten Mal einen Betreff wählst, der aussagekräftiger ist. Informationen braucht so ziemlich jeder, der hier eine Frage stellt . Die Standardreferenz für diese Informationen ist zunächst einmal die MSDN Library (auf CD nur bis zur Version Oktober 2001, online hier). -
Verzeichnis erstellen und freigeben
Klotzkopp antwortete auf deluxeone's Thema in C++: Compiler, IDEs, APIs
Hier ein einfaches Beispiel, ohne Fehlerbehandlung: SECURITY_ATTRIBUTES sa; SECURITY_DESCRIPTOR sd; BYTE sidBuffer[100]; BYTE aclBuffer[500]; PSID psid=(PSID) &sidBuffer; PACL pacl=(PACL) &aclBuffer; DWORD sidBufferSize = 100; char domainBuffer[80]; DWORD domainBufferSize = 80; SID_NAME_USE snu; InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); InitializeAcl(pacl, 500, ACL_REVISION); LookupAccountName(0, "Benutzername", psid, &sidBufferSize, domainBuffer, &domainBufferSize, &snu); AddAccessAllowedAce(pacl, ACL_REVISION, GENERIC_READ | GENERIC_WRITE, psid); SetSecurityDescriptorDacl(&sd, TRUE, pacl, FALSE); sa.nLength= sizeof(SECURITY_ATTRIBUTES); sa.bInheritHandle = FALSE; sa.lpSecurityDescriptor = &sd; CreateDirectory("C:\\Verzeichnis", &sa);[/CODE]Dieses Beispiel legt ein Verzeichnis "C:\Verzeichnis" an, und erteilt dem Benutzer "Benutzername" des lokalen Rechners Lese- und Schreibrechte. Wenn Du mehr als einem Benutzer Rechte einräumen willst, musst Du entsprechend LookupAccountName mehrfach aufrufen, um an die SIDs zu gelangen, daraus ACEs zu machen, und der ACL hinzuzufügen. Falls Du explizit Rechte entziehen willst, musst Du darauf achten, zuerst die AddAccessDeniedAce-Aufrufe zu machen, und danach erst die Aufrufe von AddAccessAllowedAce. Welche Rechte es explizit sind, steht im dritten Parameter von AddAccessAllowed/DeniedAce. Wenn das Verzeichnis schon existiert, musst Du CreateFile verwenden, um die Berechtigungen zu ändern. -
Verzeichnis erstellen und freigeben
Klotzkopp antwortete auf deluxeone's Thema in C++: Compiler, IDEs, APIs
Wenn Du die Verzeichnisse mit CreateDirectory anlegst, kannst Du die Zugriffsrechte über die SECURITY_ATTRIBUTES-Struktur definieren. Dazu musst Du Dich mit ACLs und SIDs und dem ganzen Sicherheitskram rumschlagen. Die wahrscheinlich einfachere Alternative: cacls ausführen - über system oder ShellExecute. -
Geht nicht (?): WHERE (forum_id != '16') OR (forum_id != '4')
Klotzkopp antwortete auf ABRAXAS's Thema in Datenbanken
Ganz einfach: Jede Zahl ist ungleich 16 ODER ungleich 4. Diese Where-Klausel stellt also keine Einschränkung dar. Versuchs mal mit AND . -
Verzeichnis erstellen und freigeben
Klotzkopp antwortete auf deluxeone's Thema in C++: Compiler, IDEs, APIs
Zwei Punkte: Erstens sind Anmerkungen zu Moderationsentscheidungen in den jeweiligen Fachforen OffTopic, so was klärt man besser per PM. Zweitens solltest Du vielleicht nochmal genau nachsehen, wohin ich Deinen Beitrag verschoben habe, und die Kritik (und vielleicht auch die Form, in der sie angebracht wurde) überdenken. Alternativ kannst Du mir sagen, wie das, was Du vorhast, mit Standard-C/C++ funktionieren soll, dann schiebe ich Dich gern zurück. -
Nein, keine Münze vom 11. Stapel, sonst gehts nicht
-
Verzeichnis erstellen und freigeben
Klotzkopp antwortete auf deluxeone's Thema in C++: Compiler, IDEs, APIs
Was auch immer die Antwort sein wird, sie ist hochgradig Windows-spezifisch. Drum schieb ich Dich mal dahin, wo die Frage passt . Thema verschoben nach: C++: Compiler, IDEs, APIs -
Die Fehler haben nichts (oder fast nichts) mit den #includes zu tun: 1. Du kannst nicht einfach ein komplettes Programm in eine Methode Deiner MFC-Dialoganwendung kopieren. Das sind dann lokale Funktionsdefinitionen, und die sind nicht erlaubt. 2. Deine Applikation hat bereits ein main-Symbol (an das Du aber nicht herankommst). Diese Funktion kannst Du Deinem Programm nicht hinzufügen, Du kannst nur den Code einer bestehenden Funktion hinzufügen. 3. Das Programm, das Du einfügen willst, erzeugt Ausgaben auf der Konsole. Die ist aber bei MFC-Dialoganwendungen gar nicht sichtbar. 4. Die richtige Position für das #include ist in der Datei containerDlg.cpp, möglichst weit am Anfang, aber in jedem Fall nach #include <stdafx.h>. Aber wie gesagt, das wird die anderen Probleme nicht lösen.
-
Hallo zusammen, class X { public: X() { n = 0; } X( const X& ref ) { n = ref.n; } X& operator=( const X& rhs ) { if( &rhs != this ) { n = rhs.n; } return *this; } private: int n; }; int main() { X x1, x2; bool someCondition = true; X& xref = x1; if( someCondition ) { [COLOR=RED]xref = x2;[/COLOR] } return 0; }[/CODE] Das ist nur Beispielcode, um die Frage zu veranschaulichen. An der rot markierten Stelle wollte ich eigentlich die Referenz ändern, so dass sie auf x2 verweist. Allerdings wird an dieser Stelle der Zuweisungsoperator aufgerufen, was im Nachhinein betrachtet auch Sinn macht, selbst wenn es nicht das ist, was ich wollte. Kennt jemand eine Lösung für das, was ich vorhatte? Dabei möchte ich nach Möglichkeit nicht auf Zeiger zurückgreifen...