Skocz do zawartości

Polar

Stały użytkownik
  • Postów

    1924
  • Dołączył

  • Ostatnia wizyta

  • Wygrane w rankingu

    4

Treść opublikowana przez Polar

  1. Można w taki sposób ( np na przycisku ). #include <dos.h>#include <time.h>//...void __fastcall TForm1::Button1Click(TObject *Sender){ time_t day , month , year , min, sec , hour; // zmienne czasu struct date d; // obiekty dla struktur struct time t; // getdate(&d); gettime(&t); month = d.da_mon; // i tu te zmienn czasu można już wykożystać day = d.da_day; year = d.da_year; min = t.ti_min; sec = t.ti_sec; hour = t.ti_hour; ShowMessage("data:"+FloatToStr(day)+"-"+FloatToStr(month)+"-"+FloatToStr(year)+ "\nczas:"+FloatToStr(hour)+":"+FloatToStr(min)+":"+FloatToStr(sec)); // np w taki sposób (ten sposób jest akurat bez sensu :P)} Wszystko jest opisane w helpie ( tzn nie bezpośrednio trzeba to umieć wykorzystać jak w kodzie który masz u góry ) Borland ma najlepszy help a ty chyba nie umiesz albo chyba nie chce ci się szukać... ? Update: na początku trzeba dodać te 2 nagłówki ( skleroza ) :sad: . ( nagłówki stare ale jest tam wiele ciekawych rzeczy czego nie ma w róznych cxxx )
  2. No klucze obce w php raczej kuleją , więc do powiązania tego raczej wykorzystaj php , ale takie porównywanie będzie średnio złożone w tym przypadku. Ale rozwiązanie tutaj sie samo nasuwa , popatrz na nazwy w tabeli oceny takie jak : id_uczen id_przedmiot ma ona dwie flagi id ucznia i id przedmiotu. Czyli dodawanie ocen uczniowi będzie polegało na dodaniu rekordu do tej tabeli albo jego modyfikacji gdzie trzeba będzie okręślić flagi jaki to uczeń i z jakiego przedmiotu jest ocena.
  3. Wielka zaleta neta - chodzi wolno i tylko na winszycie. To pytanie czy żart ? Żeby nagrać na cdr to guwno nie trzeba mieć licencj. To normalny "program" jeśli ktoś go nie ma nie uruchmi twojego programu więć to chyba normalne że musisz go zapodać razem z netem. Poprostu nagraj na płyte z twoim progrmem ta aplikację albo w opisie aplikacji "readme" zamieść link do niej, na stronie mikroszytu.
  4. A tak na przyszłośc to pisz swoje programy czytelnie z komentarzami , wcięciami , przejrzyście bez "oszczędzania" na liniach, pisz main() na górze i także deklaracje funkcji na górze ( TO NIE JEST C ) bo ciężko sie połapać w cudzym i jeszcze niechlujnym kodzie. Ten program może mieć ludzką twarz jabym go zrobił na superszybkiego tak: (można go zrobić na wiele sposobów) PHP #include <iostream> #include <fstream> #include <conio.h> // jak nie ma conio to wykomentować using namespace std; int pisz(char p[50]); int pomoc(); int program (); //------------------------------------------------------------------------------ int main() { program(); return 0; } //------------------------------------------------------------------------------ int pisz(char p[50]) { char powrot , ch ; cout<<"Wpisz tekst i wcisnij enter"<<endl; ofstream outfile (p); /* while((ch = cin.get()) != '\t') // tabulator kończy, strumień buforowany { outfile.put(ch); //outfile << ch; // lub tak } */ while((ch = getch()) != 13) // Enter kończy od razu, strumien niebufor. { cout << ch; // ponieważ strumień niebuforowany to wypada to wyświetlić outfile.put(ch); } outfile.close(); return 0; } //------------------------------------------------------------------------------ int pomoc() { char powrot; cout<<"tutaj wyswietla sie help do programu"<<endl; cout<< "Powrot do glownego menu ? [y] "; while (powrot!='y')cin>>powrot; return 0; } //------------------------------------------------------------------------------ int program() { char p[50]; char r_w; do { system("cls"); // dla windows , lub clear zamiast cls cout<<"Wybierz akcje :"<<endl; cout<<"x - utworz"<<endl; cout<<" h - pomoc"<<endl; cout<<" q - wyjscie z programu"<<endl; cout<<"Twoj wybor:"; cin>>r_w; switch(r_w) { case 'x': cout<<"\n\t\t\t Podaj nazwe pliku"; cin>>p; pisz(p); break; case 'q': exit(1); break; case 'h': pomoc(); break; } } while (1); return 0; } //------------------------------------------------------------------------------
  5. ten warunek jest bez sensu bo co to wogóle znaczy "dopuki ch będzie różne od EOF" ??? to by może by i służyło gdyby tu codziło o pobieranie z pliku np plik.get(ch), ale tu jest bez sensu i nigdy nie zostanie spełnione , to jest przyczyna tego zapentlenia. powinno być np. tak. PHP do { ch=cin.get(); outfile.put (ch); } while (ch!='\t'); wtedy do czasu nienaciśnięcia tabulatora kiedy sturmień cin.get() nie zostanie oprózniony (czyli dopuki nie naciśniesz enter) doputy ta pental będzie w obiegu. mozna też zastosować getch() (strumień niebuforowany) z biblioteki conio.h w przypadku tego programu znacznie lepszy niż buforowany cin.get().
  6. :mur: Ogólnie każdy sposób na system logowania/rejestracji ma swoje minusy i plusy, czy to cookie czy sesje-cookisowate czy czyste sesje, nic nie jest doskonałe dla każdego powinno to stanowić indywidualny wybór czego użyć. Strach przed przejęciem sesji, włamem hackiem i jeogo jako takie "wykonanie", przypomina amerykańskie filmy o hakcerach, czyli coś co dzieje sie na filmie a jest prawie nie do wykonania w rzeczywistości... Rób tak żeby było proste i sprawnie działało, na samym końcu... czyli potem zajmij sie tego udoskonalaniem.
  7. Są wolniejsze ale też bezpieczniejsze (coś za coś)... (pozatym szablonowy string jest bardzo fajnym "typem" do napisów, no przynajmniej dla mnie :P) Wiesz, pisze const char* z przyzwyczajenia bo najczęściej tak robie (poprostu tak jest bezpieczniej jeśli wskaźnik "pokazuje na stały obiekt", żeby nic tam już nie trafiło przez przypadek) jeśli mi jest potrzebny wskaźnik pokazujący na jakiś napis itd... Znana jest też reguła że "na wskaźnikach wymięknąć każdy może, trochę lepiej lub trochę gorzej" :twisted:
  8. albo poprostu zastosuj String w klasie , bo po bawić sie const char * ???
  9. Wszystkie Książki Bruce'a Lee absolutnie nie są przeznaczone dla początkujących. Pomijam tu już kiepską szate graficzną i beznadziejnie napisane przykłady , które ciężko jest objąc wzrokiem a z przepisywaniem jest masakra :-P . Jest tyle książek przeznaczonych dal początkujących że głowa ( na pewno wybieżesz coś lepszego i zrozumiałego dla nooba ) boli jednak seria thinking in xxx absolutnie do nich nie należy. :P
  10. Nie da sie ukryć Misiek że namieszałeś. Ja bym to zrobił tak. Napisane w C++Builder aby działo w DevC++ wystarczy skomentować jedno clrscr(). Ale wtedy będzie rolować a nie czyścić ekran... #include <iostream>#include <cstdio>#include <conio.h>using namespace std;//------------------------------------------------------------------------------class towar{ char nazwa[64]; float cena; int ilosc , i, ile; static int ilosc_w_magazynie, ilosc_rodzajow; static float calkowity_koszt;public: void wpisz(); static void oblicz(); void wyswietl(); void wyswietl_menu();};//------------------------------------------------------------------------------void towar::wpisz(){ cout << "Podaj nazwe towaru - "; cin >> nazwa; cout << "Podaj cene twaru - "; cin >> cena; cout << "Podaj ilosc towaru - "; cin >> ilosc; cout << endl; calkowity_koszt = ilosc*cena+calkowity_koszt; ilosc_rodzajow++; ilosc_w_magazynie += ilosc;};void towar::oblicz(){ cout << "\nIlosc pozycji : " << ilosc_rodzajow << "\nIlosc towarow : " << ilosc_w_magazynie << "\nCalkowity koszt : " << calkowity_koszt << endl; getch();}void towar::wyswietl(){ cout << "\n| Nazwa towaru : " << nazwa << "\t| Cena : " << cena << "\t| Ilosc : " << ilosc << "\t|" ;}void wyswietl_menu(){ cout << "\n1. Wprowadzanie danych" << "\n2. Wyswietlanie danych" << "\n3. Obliczanie wartosci towarow" << "\n4. Koniec programu" << "\nWybierz numer opcji - ";}//------------------------------------------------------------------------------float towar::calkowity_koszt; // obiekty statyczne klasyint towar::ilosc_w_magazynie; // aby byly znane globalnieint towar::ilosc_rodzajow; ////------------------------------------------------------------------------------int main(){ int i= 0,ile = 0 ,j = 0 , menu; towar tow[100]; do { clrscr(); //to wykasować aby program działal na devc++ wyswietl_menu(); cin>>menu; if(menu==1) { cout << "\n\nWpisz ilosc pozycji - "; cin >> ile; int war; // tu taka sztczka aby for(war = i; war < ile+i; war++) tow[war].wpisz(); // dopis. do konca tablicy i = war; // obiektów a nie od poczatku } else if(menu==3) { cout << "\n\nZestawienie magazynu : \n" ; towar::oblicz(); } else if(menu==2) { cout << "\nIle pozycji chcesz wyswietlic - "; cin >> ile; while(ile > j) tow[j++].wyswietl(); j = 0; cout << endl ; towar::oblicz(); } else break; } while(1); return 0;}//------------------------------------------------------------------------------
  11. A umiesz czytać ? to nie jest błąd tylko wyjątek złapany. Nie uruchamiaj programu z run tylko daj build a potem go odpal normalnie z katalogu tam gdzie jest , a nie przez kompilator...
  12. Wygodnie było by tu skorzstać z wbudowanej w buildera obsługi wyjątków, można na inne sposoby ale po co ? Twój przykład jest nieco przerobiony , żeby było to łatwiej pokazać. void __fastcall TForm1::Edit1Change(TObject *Sender){ String wybor = "przez 8"; double liczba; try{ liczba = Edit1 -> Text.ToDouble(); if(wybor == "przez 8") Label1 -> Caption = FloatToStr(liczba / 8); if(wybor == "razy 8") Label1 -> Caption = FloatToStr(liczba * 8); } catch(...) { //ShowMessage("Podaj prawidlową liczbę"); }} Trochę go przerobiłem ale myslę że rozumiesz sens tego. Poprostu gdy wystąpi jakiś error w bloku try{} wtedy program go wyłapie i nie wyświetli nic , poprostu nie wykona sie dzielenie.
  13. Polar

    Dev C++

    #include <windows.h>int main(){ Beep(1000 , 1000); return 0;} Łopatologocznie wytłumaczone. :razz:
  14. Polar

    Co Zrobiłem Żle ?

    A dlaczego miałby być błąd jeśli kompilator ma obsługe biblioteki conio.h to jest to bardzo dobry pomysł. getch() i getchar() obydwie funkcje czytają ze standardowego wejścia stdin, róznica jest taka że getchar jest buforowany do czasu gdy naciśniesz Enter wtedy strumień jest oprózniany, getch() natomiast nie jest buforowany i działa od razu gdy tylko naciśniesz jakiś przycisk. exit(1) to jest wyjscie z programu bezwarunkowe a getchar() tak jak wcześniej napisałem... w twoim przypadku stosowane do chwilowego wstrzymanai programu przed jego całkowitym zamknięciem ( jako jedna z wielu możliwości zastosowania tej funkcji ) , może nie za szczęsliwa bo lepij cin.get(); getch(); system("pause") ;
  15. Polar

    Dev C++

    Zapomnij o funkcji sound w c++. Trzeba wykorzystać funkcje Beep(unsigned long częstotoliwość , unsigned long dlugość) Musi być dodane: #include <windows.h> a potem np : Beep(1000,1000) ;
  16. Polar

    Dev C++

    Zaraz po dyrektywach #include , dodaj do programu linijkę using namespace std ; tak samo do buildera się ją powinno dodawać jak i do wszystkich innych kompilatrów aby potem nie pisać std::cout << ... albo std::cin >>... itd...
  17. Początkujący nie powinien wiedzieć co to jest klasa i szablon bo i tak tego nie zrozumie a jeśli nawet zrozumie to i tak nie będzie umiał z tego korzystać. Wg. mnie na początek zdecydowanie lepiej nie mieszać w głowie tymi tematami tylko dać podstawy...
  18. Może i jest ok ale tematu na pewno nei wyczerpuje , poprostu jest to pozycja dla super początkujących i tyle ( i jeśli wg. tego ją traktujemy to na pewno jest ok ). Jeśli natomiast chcesz zgłębić język to musisz zakupić ksiązki do tego napisane i przedewszystkim pisać pisać i jeszcze raz pisać , bo pisania można sie nauczyć tylko pisząc. Co do tytułów to nie będę sie powtarzać bo już tu zostały wymienione.
  19. Polar

    Tryby Pracy W C

    Hmmm napisał bys o jakie dwa tryby ci chodzi , wg. mnie chodzi ci o tryb graficzny i tekstowy ?
  20. Polar

    Dobry Kompilator C

    Stary co ty gadasz że tam wszystko jest pod windows :blink: :blink: :blink: ? Dajesz File->New->Other->Console Wizard i Przez ten kreator wybierasz sobie jezyk c czy c++ i inne rzeczy , i piszesz program konsolowy w wybranym języku i w dodatku masz super szybki kompilator konsolowy za darmo (c++builder personal). Przecież nie musisz korzystać z form tylko zrobić sobie program konsolowy wykorzystując tego kreatora. A jeśli chodzi ci o to "This program must be run under Win32" to musisz znaleść kompilator który to umożliwia ( tworzyć pliki żeby działały w czystym dosie ) np borland 5.02 albo nawet 3.1 ( obecnie jest darmowy ) , Watcom itp.
  21. Mi to nie przeszkadza, w necie nie pisze. A szybciej to pewnie go nie będzie niż za rok. :P
  22. C++Builder na pewno będzie kontynułowany w następnym wydaniu Borland Developer Studio. Mi to nie przeszkadza, 6 na razie mi do wszystkiego wystaracza i jest ok. Warto poczekać dłuśzej i mieć coś dobrego.
  23. Nie przepadam za tym tworem. :banana:. Wg mnie ta bibliteka nie powinna wogóle powstać. Microshit mógłby wymyśleć coś przyjemniejszego... no chyba żę im oto chodziło żeby to przyjemne nie było. :banana:
  24. To jest zdaje się beta do testów, ale i tak nei można jej tak łatwo zassać zdaje sie że trzeba należeć do czegośtam żeby to mieć legalnie. ( Kolejny gniot od MS ).
  25. Zrobiłem raz takiego gniota co wyszukuje podany text z textu wpisanego wcześniej przez urzytownika, wklejam jego kod może ci się przyda. Ale zaznaczam - jest to gniot, ale działa. Kompiluje sie w Borland 3.1/4.x/5.x , lub tam gdzie jest pełna obsługa biblioteki. conio.h #include <iostream>#include <conio.h>int szukanie(char * tekst, char *zdanie);void zaznaczanie_wyrazu(unsigned int ile , char *tekst, int dlug);//------------------------------------------------------------------------------int main(){ cout << "podaj tekst do przeszukania" << endl; char tekst[100] = {0}; cin.getline(tekst , 100); cout << "podaj wyraz do wyszukania czy taki wyraz jest w tekscie" << endl; char wyraz[100] = {0}; cin.getline(wyraz ,100); int miejsce=szukanie(tekst,wyraz); if(miejsce) { cout << "text istnieje i zaczyna sie od indexu "<< miejsce << endl; zaznaczanie_wyrazu(miejsce , tekst , strlen(wyraz)); } else cout << "taki text nie istnieje"; getch(); return 0;}//------------------------------------------------------------------------------int szukanie(char* tekst,char* wyraz){ unsigned int zmienna=0, j=0, miejsce=0; for (unsigned int i = 0; i < strlen(tekst);i++) { if(tekst[i] == wyraz[j]) { miejsce++; zmienna++; j++; if (zmienna >= strlen(wyraz)) return miejsce-strlen(wyraz); } else { miejsce++; zmienna = 0; j = 0; } } return 0;}//------------------------------------------------------------------------------void zaznaczanie_wyrazu(unsigned int ile , char*tekst, int dlug){ for(unsigned int i = 0; i < strlen(tekst);i++) { if (i == ile) { textcolor(BLACK); textbackground(WHITE); } else if (i > ile+dlug-1) { textcolor(LIGHTGRAY); textbackground(BLACK); } cprintf("%c" , tekst[i]); }}
×
×
  • Dodaj nową pozycję...