Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Das kannst du auf der Suchseite einstellen. Standardmäßig werden nur vollständige Wörter gesucht. Du hättest also *buch eingeben müssen. Das steht aber auch auf der Suchseite.
  2. Aus einer Templatedefinition wird zunächst einmal kein Code erstellt. Der Code wird erst dann produziert, wenn das Template benutzt wird, und zwar für jeden Templateargument-Typ (bzw. für jede Kombination von Typen bei mehreren Templateargumenten) einmal. Das hat aber zur Folge, dass die Definition in jeder Übersetzungseinheit verfügbar sein muss, in der sie verwendet wird. In C++ ist dafür das Schlüsselwort export vorgesehen, das aber viele Compiler nicht unterstützen. Daher setzt man die Templatedefinitionen einfach in die Header. Wenn eine cpp-Datei das Template nicht braucht, passiert nichts (siehe oben), und wenn doch, ist der Code da. Das ist auch der Grund, warum die Container der Standardbibliothek (vector, map usw.) in den jeweiligen Headerdateien implementiert sind.
  3. Das hat schon seinen Grund, wenn ich nach dem genauen Wortlaut der Fehlermeldung frage, weil die Hinweise für die Fehlerursache liefern kann. Oder lautet die Meldung wirklich genau so? Kann ich mir nicht vorstellen.
  4. Wie lautet denn die Fehlermeldung? Nachtrag: Ich kann's mir denken... Die Definition der Templatefunktion muss in jeder Übersetzungseinheit, die sie verwendet, zur Verfügung stehen. Da einige Compiler mit dem Schlüsselwort export bei Templates nicht zurechtkommen, ist es am einfachsten, wenn du die Funktionsdefinition in die Headerdatei setzt.
  5. Alles, was nicht variabel ist, kannst du aus der Templatedeklaration rausnehmen und fest in den Funktionskopf reinschreiben: template <class C> void foo( void(C::*funcp)(CString,int) )[/CODE]Hier sind Rückgabetyp und Argumenttypen festgelegt, nur die Klasse nicht.
  6. Du könntest etwas in der Art machen: class Test { public: template <typename returntype, class C, typename Param1, typename Param2> void foo( returntype(C::*funcp)(Param1,Param2) ) { C x; Param1 p1; Param2 p2; (x.*funcp)( p1, p2 ); } }; class Callee { public: void bar( int x, double y ) { // irgendwas } }; int main() { Test t; t.foo( &Callee::bar ); }[/CODE]
  7. Der Typ des Zeigers pfunction ist void(CErweiterungsSnapShotDlg::*)(CString,CString) Falls du mit "beliebig" Zeiger auf Funktionen anderer Klassen oder mit anderer Signatur meinst: Das geht nicht. Du kannst an eine solche Funktion nur Zeiger auf Memberfunktionen von CErweiterungsSnapShotDlg übergeben, die void zurückgeben und zwei CString-Parameter haben. Du kannst eine solche Funktion über den Zeiger auch nur aufrufen, wenn du eine Instanz von CErweiterungsSnapShotDlg hast.
  8. --> Verschoben: Delphi/VB/VBS/AS 400/C#/.net/Sonstige
  9. Wie ist denn der genaue Wortlaut der Exception? Gibt es vielleicht im Trace-Fenster genauere Informationen, wenn du das Programm im Debugger ausführst?
  10. In der MSDN steht, dass GetFieldValue zwei Arten von Ausnahmen werfen kann: CDBException* und CMemoryException*. Ich tippe auf ersteres. Fang die Ausnahme auf, dann kannst du weitere Informationen rausholen: try { // Dein Aufruf } catch( CDBException* pEx ) { CString strMsg; strMsg.Format( "%d\n%s\n%s", pEx->m_nRetCode, pEx->m_strError, pEx->m_strStateNativeOrigin ); MessageBox( strMsg ); }[/CODE]
  11. Klotzkopp

    Shell Werbung

    http://www.konsumterror.de/werbesongs/a.shtml Unter "Axe"
  12. Du übergibst einen Zeiger, die Funktion erwartet aber eine Referenz. Mach das & weg.
  13. Für die Treiberprogrammierung unter Windows brauchst du das DDK. Darin enthalten ist eine umfangreiche Dokumentation und jede Menge Beispiele. Zum Debuggen brauchst du einen kernelfähigen Debugger, z.B. WinDbg (kostenlos) oder SoftIce (nicht kostenlos). Das DDK kann man aber AFAIK nicht herunterladen, sondern sich nur (gegen Erstattung der Versandkosten) zuschicken lassen.
  14. Während ich deinen Thread ins richtige Forum verschiebe (Standard-C/C++ weiß nicht von seriellen Schnittstellen), könntest du verraten, welchen Compiler du benutzt. Wir können dir umso besser weiterhelfen, je mehr Informationen du lieferst, z.B. was du genau versucht hast, und was genau nicht funktioniert hat (Fehlermeldungen etc.):
  15. Wenn dein Dialog weiterhin Nachrichten bearbeiten soll, während du auf das Ende des Workerthread wartest, dann geht das so nicht. Du befindest dich ja gerade in der Behandlungsfunktion für eine Nachricht (die Click-Nachricht deines Cancel-Buttons). Da musst du erst wieder raus, bevor du weitere Nachrichten empfangen kannst. Der Workerthread könnte z.B. eine besondere Nachricht an den Dialog senden, wenn er fertig ist. Für diese Nachricht legst du dann im Dialog eine Behandlungsfunktion an. Wie das geht, steht in diesem Beitrag (nur die drei fettgedruckten Zeilen sind für dich interessant).
  16. Die Regeln stehen in der Registry: HKCU\Identities\{GUID}\Software\Microsoft\Outlook Express\5.0\Rules\ Einfacher ist es allerdings mit dem Outlook Express Backup Wizard. Hier gibt's auch eine kostenlose Testversion.
  17. Hast du zufällig WIN32_LEAN_AND_MEAN definiert? Dann includiert windows.h nämlich commdlg.h nicht, das musst du dann selbst machen.
  18. Falsches Forum. Bitte beim nächsten Mal darauf achten. --> Verschoben: C++: Compiler, IDEs, APIs
  19. Du kannst z.B. direkt mit WaitForSingleObject auf das Threadhandle warten, du kannst aber auch in einer Schleife wiederholt GetExitCodeThread aufrufen. Damit die Schleife nicht den Prozessor blockiert, solltest du ein Sleep einbauen. Das bewirkt, dass der aktuelle Thread seine Zeitscheibe vorzeitig aufgibt und der nächste an die Reihe kommt.
  20. Hat nichts mit den Einstellungen des VS zu tun, sondern mit denen des IE. Bitte die Suchfunktion benutzen: Link Beim nächsten Mal bitte einen aussagekräftigeren Threadtitel wählen.
  21. Hast du das mit dem Referenzparameter mal ausprobiert? Bei mir hat das mit Zahlen und Strings funktioniert. Und dein SQL-Statement sollte ja eigentlich für das Feld "Anzahl" eine Zahl liefern.
  22. Es gibt ein Winsock2-Update für Windows 95: http://www.microsoft.com/windows95/downloads/contents/WUAdminTools/S_WUNetworkingTools/W95Sockets2/Default.asp
  23. Das war sowieso Quatsch. Du meintest ja (wenn ich es jetzt richtig verstehe) Guybrush Threepwoods Hinweis auf fopen usw. Dann brauchst du #include <stdio.h> P.S.: Der genaue Wortlaut der Fehlermeldung ist immer besser als "das kennt er nicht"
  24. Nein, using ist ausschließlich C++, in C gibt's so etwas nicht. Es gibt using-Direktiven und using-Deklarationen. Das Beispiel hier ist eine using-Direktive. Alle Klassen der C++-Standardbibliothek befinden sich in einem namespace mit dem Namen std. Wenn man sie benutzen will, muss man also schreiben: std::string s( "huhu" ); std::cout << s << std::endl;[/CODE] (ohne Koenig-Lookup müsste man sogar den Namespace vor den operator<< setzen) Durch die using-Direktive werden aber die Inhalte des bezeichneten namespace in den globalen namespace gehoben, d.h. man kann ohne std:: darauf zugreifen. using-Deklarationen verwenden man in Klassendeklarationen, um den Zugriff auf überladene Methoden von Basisklassen zu ermöglichen.
  25. Du sollst sie eben nicht als VARIANT definieren. Das ist ja der Trick bei der Sache. Der VARIANT wird nicht über den Rückgabewert, sondern über einen Referenzparameter an VB zurückgegeben. Um das zu demonstrieren, habe ich das Beispiel doch geschrieben. _variant_t ist eine Wrapperklasse für VARIANT, damit kann VB nichts anfangen. Aber was meinst du jetzt mit "Probleme"? Bekommst du eine Fehlermeldung?

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