Alle Beiträge von Klotzkopp
-
CDs brennen
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++.
-
Schleifen & Array Probleme
Nochmal der wichtige Hinweis: nicht <=5 entweder <5 oder <=4
-
Schleifen & Array Probleme
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 als Integer?
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
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
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
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')
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
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.
-
Und noch ein Rätsel
Nein, keine Münze vom 11. Stapel, sonst gehts nicht
-
Verzeichnis erstellen und freigeben
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
-
Problem mit #include<stdio.h>
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.
-
Zuweisung an Referenz
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...
-
Sequentielles und binäres Suchen (war: need help)
Mehr Hilfe wirst Du erhalten, wenn die anderen Benutzer aus dem Titel des Themas erkennen können, was Du willst. "help" möchte hier fast jeder . P.S.: Titel angepasst.
-
Outlook und POP3 before SMTP
Spielend ist anders, aber mit Outlook XP hat es Microsoft nach langer Zeit geschafft, einen Mailclient zu schreiben, der zumindest mit POP-before-SMTP klarkommt, ohne dass man zu Kunstgriffen wie doppelten Konten greifen muss. Aber meiner Meinung nach rechtfertigt das allein nicht die Anschaffung .
-
Und noch ein Rätsel
Nicht wenn man ein anderes Metall verwendet Aber egal, <Protz> ich kanns auch mit 11 Stapeln </Protz>
-
pointer -> arrays übergeben
#include <stdio.h> #define X 3 #define Y 3 int init( char ptr_grid[X][Y] ) { int i, j; for ( i=0; i<=X-1; i++ ) { for ( j=0; j<=Y-1; j++ ) { ptr_grid[i][j] = ' '; // Leerzeichen für leeres Feld } } return 1; } int show_grid( char ptr_grid[X][Y] ) { int i, j; for ( i=0; i<=X-1; i++ ) { for ( j=0; j<=Y-1; j++ ) { printf("%c ", ptr_grid[i][j] ); } printf("\n"); } return 1; } int main ( void ) { char grid[X][Y]; init( grid ); show_grid( grid ); return 1; }[/CODE]
-
Problem mit CDatabase Objekt
Es macht auch nicht viel Sinn, in DateiZ.cpp eine Instanz von CDatabase zu erstellen, um sie dann gleich wieder durch eine andere zu ersetzen. Folgender Vorschlag ist ohne Gewähr, weil ich die Lebenszeit von dbx nicht kenne: ***DateiX.h*** CDatabase& FAR PASCAL hole_Objekt(); ***DateiY.cpp*** #include <DateiX.h> //Variable CDatabase dbx; //Funktion CDatabase& FAR PASCAL hole_Objekt() { return dbx; } ***DateiZ.cpp*** #include <DateiX.h> //Variable CDatabase& db = hole_Objekt();
-
pointer -> arrays übergeben
Vielleicht sagst Du uns besser zuerst, was Du überhaupt vorhast. Willst Du jetzt einen zweidimensionalen Array von einzelnen Zeichen (char) oder von Zeigern auf int (int*)? Oder womöglich einen zweidimensionalen Array von Strings (char*)?
-
pointer -> arrays übergeben
In C geht der gültige Index für ein Array nicht von 1 bis Größe, sondern von 0 bis (Größe - 1): for ( i=0; i<X; i++ )
-
Problem mit CDatabase Objekt
Hi Munkie, willkommen auf dem Board Sollte aber funktionieren. Zeig uns mal ein wenig Code... Ist das die Fehlermeldung des Compilers?
-
2. Rätsel
Das Sarg-Rätsel geht eigentlich so: Der es macht, der braucht es nicht, der es kauft, der will es nicht, der braucht, der weiss es nicht. Und bei dem anderen Rätsel frage ich mich: Was ist der Unterschied zwischen "einmal am Tag" und "jeden Tag"?
-
Qt Qtable
Wenn Du ein QTable* hast, dann musst Du natürlich den Pfeiloperator verwenden: deinQTableZeiger->item( row, col )->setWordWrap( true );
-
Qt Qtable
deinQTable.item( row, col )->setWordWrap( true );
-
Argumenttyp ByRef unverträglich
Warum schreibst Du eigentlich alles fett? Da geht der Sinn der Hervorhebung irgendwie verloren... Hier gibts einige Informationen über die Typisierung von Parametern in VB.