Skocz do zawartości

Doc

Członkowie
  • Postów

    0
  • Dołączył

  • Ostatnio

    Nigdy

Doc's Achievements

Newbie

Newbie (1/14)

0

Reputacja

  1. Pawiem ci tak: Wielowątkowość to sciema. W rezultacie każdy wątek, proces itp są uruchomione w pewnym czasie i to się odbywa na zasadzie przełączania procesów i wątków. Każdy otrzymuje określoną ilość czasu na wykonanie zależną od priorytetu ( mniej więcej ). Ale motyw jest taki że na przełączanie tych wątków też się zużywa pewną ilość mocy procesora. Generalnie zasada jest taka: Jeżeli nie potrzebny ci jakiś wątek to go nie rób bo spowolnisz tylko system. A co do materiałów to w każdej książce o programowaniu w WINAPI coś powinno być. Ja troche czytałem o tym w "MFC - czarna księga" czy coś takiego. Ale nie warto jej kupywać dla samego tego tematu :P
  2. Doc

    Operatory

    Zgadzam sie ale nie można zrobić funkcji składowej żeby możliwe było działanie nie takie CVector v; // // tu inne rzeczy // CVector v1 = v*12.0f; ale takie CVector v; // //tu inne rzeczy // CVector v1 = 12.0f*v; // tu błąd wywali bo funkcja składowa przyjmuje parametry poprzez this i zmienną float. Wtedy trzeba zaprzyjaźniać. A jak sie napisze friend w ciele klasy to to nie będzie funkcja składowa tylko normalna jeżeli sie nie myle( ale moge sie mylic). Taki jest moje skromne zdanie.
  3. Doc

    Operatory

    Dzieki za odpowiedz. Macie racje trzeba albo jeden argument albo zaprzyjaźnic albo globalną. A zaprzyjaźnianie nie jest bez sensu bo funkcja globalna nie ma dostepu do pul niepublicznych klasy.
  4. Doc

    Operatory

    Problem jest z podstaw programowania ale jest. Chciałem napisac klase CVector następującej treści: class CVector { float x; float y; float z; CVector operator*( float r ) { x*=r; y*=r; z*=r; return (*this); } CVector operator*( float r, CVector& a ) // tu wywala bland { return (a*r); } }; oczywiście to nie cala klasa. Chodzi o to że przy zaznaczonym fragmencie wywala mi VC6 bland deklaracji, a mianowicie że ten operator musi zostać zadeklarowany jednoargumentowo. Patrzyłem w książkach i nawet w bibliotekach samego VC6 i jest to tam zadeklarowane podobnie tylko że operator '+' ( u mnie tez nie dziala ), i te operatory deklarowane w innych bibliotekach dzialaja. Może coś żle robie ( a jak znam siebie to pewnie tak ). Może ktoś wie co jest nie tak??? Za uwagi z góry thenx. P.S: Sprawdzalem w forum nie ma takiego tematu :/
  5. Dzieki za odpowiedz. Wiele mi wyjasnilo bo nie wiedzialem o tym motywie, ale czemu jak przypisuje się liczbę np. 4.123 do zmiennej double to czemu są takie motywy. Przecież to jest liczba określona jednoznacznie bez żadnych śmieci na końcu???
  6. Sorry zżeniłem tutaj, nie mialem dostepu do swojego zródła i dlatego. Tak na prawde to jest taki motyw jak następuje: double liczba = 0.412; double calosci,ulamki; cout << "wartosc poczatkowa liczba=" << liczba << endl; cout << endl; do { liczba *= 10.0; ulamki = modf( liczba, &calosci ); cout << "liczba=" << liczba << endl; cout << "calosci=" << calosci << endl; cout << "ulamki=" << ulamki << endl; cout << endl; liczba -= calosci; }while( liczba > 0.0 ); i po wywolaniu tego daje to dziwne wyniki takie jak: ( jak ktos mi powie co jest grane to bede wdzieczny) wartosc poczatkowa liczba=0.412 liczba=4.12 calosci=4 ulamki=0.12 liczba=1.2 calosci=1 ulamki=0.2 liczba=2 calosci=2 ulamki=1.06581e-014 liczba=1.06581e-013 calosci=0 ulamki=1.06581e-013 liczba=1.06581e-012 calosci=0 ulamki=1.06581e-012 liczba=1.06581e-011 calosci=0 ulamki=1.06581e-011 liczba=1.06581e-010 calosci=0 ulamki=1.06581e-010 liczba=1.06581e-009 calosci=0 ulamki=1.06581e-009 liczba=1.06581e-008 calosci=0 ulamki=1.06581e-008 liczba=1.06581e-007 calosci=0 ulamki=1.06581e-007 liczba=1.06581e-006 calosci=0 ulamki=1.06581e-006 liczba=1.06581e-005 calosci=0 ulamki=1.06581e-005 liczba=0.000106581 calosci=0 ulamki=0.000106581 liczba=0.00106581 calosci=0 ulamki=0.00106581 liczba=0.0106581 calosci=0 ulamki=0.0106581 liczba=0.106581 calosci=0 ulamki=0.106581 liczba=1.06581 calosci=1 ulamki=0.0658141 liczba=0.658141 calosci=0 ulamki=0.658141 liczba=6.58141 calosci=6 ulamki=0.58141 liczba=5.8141 calosci=5 ulamki=0.814104 liczba=8.14104 calosci=8 ulamki=0.141036 liczba=1.41036 calosci=1 ulamki=0.410364 liczba=4.10364 calosci=4 ulamki=0.10364 liczba=1.0364 calosci=1 ulamki=0.0364015 liczba=0.364015 calosci=0 ulamki=0.364015 liczba=3.64015 calosci=3 ulamki=0.64015 liczba=6.4015 calosci=6 ulamki=0.401503 liczba=4.01503 calosci=4 ulamki=0.0150279 liczba=0.150279 calosci=0 ulamki=0.150279 liczba=1.50279 calosci=1 ulamki=0.502788 liczba=5.02788 calosci=5 ulamki=0.0278807 liczba=0.278807 calosci=0 ulamki=0.278807 liczba=2.78807 calosci=2 ulamki=0.788067 liczba=7.88067 calosci=7 ulamki=0.880669 liczba=8.80669 calosci=8 ulamki=0.806686 liczba=8.06686 calosci=8 ulamki=0.066864 liczba=0.66864 calosci=0 ulamki=0.66864 liczba=6.6864 calosci=6 ulamki=0.686401 liczba=6.86401 calosci=6 ulamki=0.864014 liczba=8.64014 calosci=8 ulamki=0.640137 liczba=6.40137 calosci=6 ulamki=0.401367 liczba=4.01367 calosci=4 ulamki=0.0136719 liczba=0.136719 calosci=0 ulamki=0.136719 liczba=1.36719 calosci=1 ulamki=0.367188 liczba=3.67188 calosci=3 ulamki=0.671875 liczba=6.71875 calosci=6 ulamki=0.71875 liczba=7.1875 calosci=7 ulamki=0.1875 liczba=1.875 calosci=1 ulamki=0.875 liczba=8.75 calosci=8 ulamki=0.75 liczba=7.5 calosci=7 ulamki=0.5 liczba=5 calosci=5 ulamki=0 -- koniec-- link do projektu www.lo1.elk.edu.pl/projekt/asd.zip oraz do gotowego programu www.lo1.elk.edu.pl/projekt/asd.exe
  7. Doc

    petla czasowa

    Hmmm.... nie wiem czy warto odpowiadać bo... No właśnie ... Są sporo sposobów: 1. możesz po prostu zastosować jakąś funkje usypiania programu na 10 mili sekund ( delay, sleep ) 2. ustawić timera na 10 mili sekund ( ale to nie zawsze bedzie co 10 mili sekund ) 3. zrobić sobie oddzielny wątek ( najlepiej jak na najwyższym priorytecie ) Jest jeszcze duuuuzo sposobów. To jest tylko kilka podstawowych. Mam nadzieje ze to o to chodzilo.
  8. Jest taki problem który mnie bardzo zadziwił. Pisałem program w którym był taki oto kod: double x = 4.0; double czesc_calkowita; double czesc_ulamkowa; czesc_calkowita = modf( x, &czesc_ulamkowa ); i wszystko byloby dobrze gdyby po wykonaniu tej funkcji w czesc_calkowita byla liczba 4.0 a w czesc_ulamkowej bylo 0.0 ale jest w odpowiednio 3.0 i 0.9999999999.... CZy ktoś może mi wyjaśnić czemu??? (na VC6.0)
  9. Doc

    Pytania i dygresje :)

    Hmm.... wlasnie ze ten wskaznik jest z tskmsg a nie z mojego programu. I w ten sposob jest lipa bo nie wiem jak go uzyskać.
  10. Doc

    Pytania i dygresje :)

    A juz chcialbys wiedziec 8) Ja chce wiedziec to o co sie spytalem. Jak sie dowiem to zapodam zrodlo i sie z niego dowiesz. A jak cos to on nie zalezy od komunikatu, to jest zwykly wskaznik i ja chce ustawic pamiec na ktorom wskazuje na 1. Litosci!!! Czy nikt na prawde nie wie :?
  11. Doc

    Pytania i dygresje :)

    Po paru godzinach debugowania doszedlem do tego ze: po pierwsze szuka okna po drugie wysyla komunikat nie bede teraz pisal jak co i gdzie bo to nie ma sensu. Musze tylko wiedziec jak ustawic ten ostatni parametr na jeden albo ewentualnie skad go wziasc bo nigdzie nie moge znalesc opisu dokladnego funkcji SendMessageTimout. Czy teraz jasne????
  12. Doc

    taki sam

    Dzieki za przywitanie a co do mojej pomylki to juz schylilem glowe i uznalem swojom wine :P
  13. Doc

    taki sam

    jakos nie doczytalem, kazdemu sie zdarza co nie ???
  14. Doc

    taki sam

    Jest jeszcze inny sposob. Mozna zrobic se mutexa. Gdy kopia bedzie chciala uruchomic to po prubie zrobienia muteksa sprawdzic GetLastError() czy jest ruwny ERROR_ALREADY_EXIST jezeli tak to znaczy ze program jest juz uruchomiony. Na koncy programu zwalniamy se mutex i wszystko gra. Jeszcze mozna semaforow uzyc ale nie pamietam tera jak to sie robi. Jak interesuje cie to napisz na meila.
  15. Doc

    Pytania i dygresje :)

    Hmmmm..... spoon mi nie o trojana chodzi tylko o to by zablokowac mozliwosc uruchamiania task menedzera. O co mi chodzi to napisalem na samym poczatku ale moge jeszcze raz :) tylko troche jasniej. A wiec: W pewnym momencie taskmgr znajduje okno o tytule "Menedżer zadań Windows" czy coś takiego. A nastepnie wysyła za pomocą funkcji SendMessageTimeout komunikat. Chodzi mi o ostatni parametr czyli pdwResult ktory jak dobrze zrozumialem zawiera kod zwracany przez funkje obslugi okna do ktorego zostala wyslana wiadomosc, ale to jakas lipa bo obojetnie co zwroce to *pdwResult == 0 a jak to zwraca taskmgr to jest 1 i moje pytanie jest takie: Jak ustawic tom zmienom na 1??? Juz jasniej sie chyba nie da tego napisac :) Bylbym baaaaaaaaaardzo wdzieczny za pomoc.
×
×
  • Utwórz nowe...