Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9.912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Alle Inhalte von Klotzkopp

  1. Diese Fehlermeldung entsteht meistens dadurch, dass Du versuchst, das Programm neu zu linken während es noch läuft.
  2. Verpass der rekursiven Funktionen einen weiteren Parameter: void Recurse( int nDepth ) { ... Recurse( nDepth + 1 ); } [/code]
  3. Das #include "stdafx.h" muss aus der Headerdatei raus und in die cpp-Datei rein. Falls das nicht hilft: (Hab's hier leider nur auf Englisch, also nagel mich nicht auf die genauen Worte fest) Projekt->Einstellungen->(Deine cpp-Datei auswählen)->Register "C/C++". In der Listbox "vorkompilierte Header" auswählen, dann den ersten Punkt ("nicht benutzen") auswählen. Ach ja, #include "stdafx.h" sollte immer vor allen anderen #includes stehen <FONT COLOR="#a62a2a" SIZE="1">[ 16. November 2001 09:27: Beitrag 4 mal editiert, zuletzt von Klotzkopp ]</font>
  4. Klotzkopp

    Rand() begrenzen

    @Saturo: noch ein Hinweis: Modulo 10 liefert Dir Zufallszahlen von 0 bis 9 (!).
  5. Ich hab hier die Enterprise Edition, und da sind die Components drauf.
  6. @Crush: Ist Accept nicht für die "lauschende" Seite gedacht?
  7. "wenn allewelt Windows benutzt"? Meinst Du das ernst? Ich weiß ja nicht, was für Dich "allewelt" ist, aber es gibt noch andere Dinge außer Windows-Anwendersoftware. Es gibt Programme, die brauchen kein GUI, und es gibt Programme, die mit GUI nicht denkbar sind. Nicht jeder Programmierer will seine Software von riesigen proprietären Laufzeitbibliotheken abhängig machen.
  8. Das Programm geht in einer Schleife durch alle Portnummern von 1 bis zur angegebenen und versucht, eine TCP-Verbindung zum Zielrechner auf diesem Port aufzubauen. Falls es klappt (auf dem Zielrechner hat jemand auf diesem Port "gehorcht"), wird "OFFEN!" ausgegeben und die Verbindung gleich wieder geschlossen. Du kannst den Zugriff z.B. beschleunigen, indem Du mehrere Threads startest.
  9. Noch eine Möglichkeit: Lass "dir" (bzw. "ls") die Arbeit tun, leite die Ergebnisse in eine Datei um, die Du dann einliest. system( "dir c:\\*.xyz /s > find.txt" );
  10. Du kannst mit FindFirstFile und FindNextFile unter Win32 ein bestimmtes Verzeichnis nach Dateien durchsuchen, wobei Du auch Wildcards (*,?) angeben kannst. Um die Rekursion der Verzeichnisse wirst Du Dich aber wohl oder übel selbst kümmern müssen.
  11. Klotzkopp

    Pfad der Exe-Datei

    Versuchs mal mit GetModuleFileName. Ganz ohne MFC .
  12. Klotzkopp

    Datum anzeigen

    printf ("GONG!!Die Zeit, es ist der %02d.%02d.%04d, %02d.%02d.%02d\n", tbuf->tm_mday, tbuf->tm_mon, tbuf->tm_year + 1900, tbuf->tm_hour, tbuf->tm_min, tbuf->tm_sec);
  13. Hallo zusammen! Ich will ja kein Pedant sein, vielleicht stört es ja auch niemanden außer mir. Wäre es trotzdem möglich, in der Tabellenkopfzeile das Apostroph aus "Hit's" zu entfernen?
  14. Was ist argv1? Wenn das ein char-Array ist, dann muss der Index weg. <FONT COLOR="#a62a2a" SIZE="1">[ 31. Oktober 2001 10:13: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>
  15. Wenn Du eine Liste von Objekten hast, dann ist es am einfachsten, wenn Du der Objektklasse einen kleiner-Operator verpasst. class CItem { public: operator<( CItem& secondOperand ) { return m_nData < secondOperand.m_nData; } private: int m_nData; }; [/code] Dann funktioniert list::sort auch mit einer Liste von CItem-Objekten. Und wonach sortiert werden soll, kannst Du im Code des Operator selbst bestimmen. Wenn Du nach wechselnden Attributen sortieren willst, könntest Du das z.B. über ein statisches Attribut steuern.
  16. Wenn Du eine STL-Liste benutzt std::list<int> Liste; dann sollte das reichen, um die Werte aufsteigend zu sortieren: Liste.sort();
  17. Für gethostname brauchst Du Winsock2.h. Außerdem must Du die Ws2_32.lib reinlinken. Einfacher wärs wahrscheinlich, wenn Du GetComputerName und GetUserName benutzt. Für die brauchst Du windows.h und kernel32.lib bzw. advapi32.lib. Alles natürlich nur für den Fall, dass wir von Windows reden
  18. Also als erstes brauchst Du eine Thread-Funktion. Rückgabetyp und Parameter sind hierbei festgelegt. Die Thread-Funktion muss entweder global oder statisch sein, damit kein zusätzlicher this-pointer mit übergeben wird. Damit die Thread-Funktion auf die Member Deiner Klasse zugreifen kann, übergibt man meist einen this-Pointer an einen "Threadstart-Funktion", die dann die eigentliche Threadfunktion aufruft. // YourDlg.h class CYourDlg : public CDialog: ... static UINT __stdcall tmpWorkerThread( void* pParam ); void WorkerThread(); ... // YourDlg.cpp UINT CYourDlg::tmpWorkerThread( void* pThis ) { CYourDlg* pDlg = (CYourDlg*) pThis; pDlg->WorkerThread(); } void CYourDlg::WorkerThread() { // was auch immer getan werden muss } [/code] Den Thread startest Du dann mit [code] HANDLE hThread = (HANDLE) _beginthread( tmpWorkerThread, 0, this); CloseHandle( hThread ); Ganz wichtig, leider hab ich die Namen hier nur auf Englisch: In den Projekt-Settings, Register C/C++, Use run-time library: eine Multithreading-Runtime auswählen, in Deinem Fall vermutlich am besten "Debug Multithreaded DLL".
  19. Der TaskManager von Windows hat seine ganz eigene Auffassung von Prozesszuständen. 'Wird ausgeführt' bedeutet eigentlich 'Wartet', und 'Keine Rückmeldung' heißt soviel wie 'Hat viel zu tun'. Dass Dein Programm, nicht mehr reagiert während es arbeitet, liegt daran, dass der einzige Thread Deiner Anwendung beschäftigt ist. Wenn Du das umgehen willst, dann musst Du einen weiteren Thread starten, der dann die Arbeit erledigt (einen Worker-Thread, wie MS das nennt). Dann kann der erste Thread (der User-Interface-Thread) weiterhin dafür sorgen, dass das Fenster sich so verhält, wie man es von einem Fenster erwartet. Dann ist auch der TaskManager zufrieden. Ein zweiter Thread bringt allerdings einige neue Probleme mit sich. Der 'Splitten'-Button (oder Menü-Eintrag, was auch immer) muss auf 'disabled' gesetzt werden, damit man nicht noch einen dritten Thread starten kann, während der zweite noch läuft. Außerdem solltest Du verhindern, dass das Programm beendet wird, während der Worker-Thread noch läuft, damit die Anwendung in einem definierten Zustand terminiert.
  20. Such Dir besser gleich die Fensterklasse des Buttons mit dem Spy++ raus. Zum Klicken hatte ich schon mal was geschrieben: void MouseClick( HWND hWnd ) { if( !hWnd ) return; RECT rect; POINT mousePos; GetCursorPos( &mousePos ); ::GetWindowRect( hWnd, &rect ); int left = rect.left; int top = rect.top; ::GetClientRect( hWnd, &rect ); int width = rect.right; int height = rect.bottom; SetCursorPos( left + width / 2, top + height / 2 ); ::SendMessage( hWnd, WM_LBUTTONDOWN, MK_LBUTTON, x + 65536 * y ); ::SendMessage( hWnd, WM_LBUTTONUP, MK_LBUTTON, x + 65536 * y ); SetCursorPos( mousePos.x, mousePos.y ); } [/code] Prüf aber bitte, ob die Nutzungsbedingungen von WEB.DE solche Tools nicht verbieten
  21. Initialisiere Dein CTime-Objekt in der OnInitDialog bzw. InitInstance: deinCTimeObject = CTime::GetCurrentTime(); [/code]
  22. Das kommt z.B. daher, dass man von CD auf Platte kopiert hat.
  23. Durch das /s geht attrib alle Unterverzeichnisse durch. Starte es von C:\ und der Schreibschutz von allen Dateien, die weder versteckt noch Systemdateien sind, wird entfernt.

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