
Polar
Stały użytkownik-
Postów
1924 -
Dołączył
-
Ostatnia wizyta
-
Wygrane w rankingu
4
Treść opublikowana przez Polar
-
No cóż może coś w tym jest żę początkujący tak mówią. Mówiąc że narzędzia są beznadziejne trochę przesadziłem wiec sorry. Ale wg. mnie nie są to zbytnio profesjonalne narzędzia a na pewno nie wygodne. Początkujący nie jestem, siedze w tym prawie 4 lata. I raczej nie wiążę swojej przysżłości zawodowej programistycznej/stanowiska pracy z systemem linux. Na pewno nic mnie nie dopadnie, bo ja z tym swojej przyszłości nie wiąże wcale. Więć nie ale dziękuję. Awykonalne, chyba że ktoś ( jakiś programista ) wyniesie część kodu , to wtedy będzie "otwarty" :lol: .
-
[builder C++ 6] Sprawdzenie Polaczenie Z Internete
Polar odpowiedział(a) na turli temat w Programowanie
Najpierw wstaw sobie taki header na początku. #include <sconnect.hpp> Potem deklaracje funcji np o takiej nazwie np do klasy TForm1 bool Connected(); Definicja ten funkcji gdzieś w programie bool TForm1::Connected() //funkcja gdzieś w programie{ DWORD Flags; Flags = (INTERNET_CONNECTION_MODEM || INTERNET_CONNECTION_LAN || INTERNET_CONNECTION_PROXY || INTERNET_CONNECTION_MODEM_BUSY); return InternetGetConnectedState(&Flags, 0);} Noi przykładowe wywołanie np. na przycisku. void __fastcall TForm1::Button1Click(TObject *Sender){ if(Connected()) ShowMessage("wszystko jest ok"); else ShowMessage("brak polączenia");} -
Tak, ale nie w linuxie bo te wbudowane narzędzia są beznadziejne i jeszcze nikt w tym nic dobrego nie zrobił. Bez obrazy ale takie jest moje zdanie.
-
Czyli dublujesz sie bo using namespace std ; jest po to żeby jednoznacznie to określić i potem już nie pisać std::
-
using namespace std ; std::cin>>bok ; Dlaczego piszesz using namespace std ; a potem std:: ?... przezcież to using jest właśnie poto żeby już tego std:: pisać.
-
A powiedz nam na początek w jakiś środowisku / kompilatorze, robisz ten program ???
-
Kiedyś napisałem taki program, może ci sie przyda oto jego kod. #include <iostream>#include <cstdlib>#include <ctime>using namespace std;int main(){ cout << "Program do wyszukiwania liczb pierwszych\n\n" << "Podaj przedzial liczb do wyszukania:" << endl; uint64_t ile = 0, ile1 = 0 , suma = 0 , odd , suma1 = 0 , od , doo; cout << "od - "; cin >> od; odd = od; cout << "do - "; cin >> doo; cout << endl; clock_t start, end; start = clock(); // czas start!!! for (uint64_t i = od; i < doo+1 ; i++) { uint64_t dzielnik = 2; while ((dzielnik < i) && ((i % dzielnik) != 0)) dzielnik++; if (dzielnik == i) { ile++; suma += i; cout << i << endl; } else { ile1++; suma1 +=i; cout << "\t" << i << endl; } } end = clock(); // czas stop!!! cout << endl << "Wybrany przedzial " << odd << " - " << doo << endl << "--------------------------" << endl << "Ilosc liczb pierwszych - " << ile << endl << "Suma liczb - " << suma << endl; cout << "\nIlosc liczb pozostalych - " << ile1 << endl << "Suma liczb - " << suma1 << endl << endl << "Czas obliczen = " << (end - start) / CLK_TCK << 's'<< endl << endl; system("pause"); return 0;} Program był komopilowany pod DevC++
-
To zadziała dokładnie tak samo jak: cin >> a ; cin >> b ; cin >> c ; w czym wieć był twój problem ( białe znaki takie jak spacja , tab , endl są przez kompilator imijane)
-
To jest takie odwołanie sie do "standardowej przestrzeni nazw" rozwiązanie przyjęte w 1998 roku po końcowej standaryzacji C++. Poprostu jeśli masz kompilator zgodny z Ansi C++ to możesz sobie napisać using namespace std ; żeby potem nie pisać i nie wywoływać sobie cały czas metod std , np std::cout .... std::cin.... i tak dalej. Jeśli kompialtor tego nie rozumie to znaczy że nie jest zgodny ze standardem. Napisz jaki masz kompilator nazwa i wersja.
-
Jest masa tego, zarówno do Delphi jak i do C++ Builder http://www.delphipages.com/ http://www.delphi.icm.edu.pl/ http://www.tmsoftware.com/ http://delphi.qadram.com/ htttp://www.woll2woll.com/
-
(Niestety) Nic prostszego jeszcze nie istnieje. Ale jak mówie książki pana B.E. wszystkie Thinking in (c++/java/...) raczej nie są dla początkujących.
-
Wiele programów takich jak generatory jest pisane w winassamblerze, co sprawi że taki program ma wielkość pliku tekstowego.
-
Jeśli to ma być w C++ to raczej to powinno być tak: #include <iostream>using namespace std; void zaliczenie (double * tablica, double *dodatnie, double *ujemne);int main (){ double tablica1[10] = {-1,2, -3, -8, 7 ,9 , -4, 1, 2.5, -4.5}; double dodatnie = 0, ujemne = 0; zaliczenie (tablica1, &dodatnie, &ujemne); cout <<" suma elementow ujemnych = " << ujemne << endl; cout << " suma elementow dodatnich = " << dodatnie << endl; cin.get(); return 0; }void zaliczenie (double * tablica, double *dodatnie, double *ujemne){ for (int i=0;i<10;i++) { if (tablica[i]>0) *dodatnie += tablica[i]; else *ujemne += tablica[i]; }} Ja bym tą funkcję zadeklarował inaczej bez wskaźników od razu rerferencje same ( dla 2 i 3 argumentu ) bo później ładniej to wygląda tak na oko. //deklaracja void zaliczenie (double * tablica, double &dodatnie, double &ujemne); //wywołanie zaliczenie (tablica1, dodatnie, ujemne);
-
Nie wiem dokładnie jak to jest w IDE Microsoftu , ale powiem jak to ma być w IDE Borlanda ( może ci się przyda ). A na pewno się przyda wielu osobom które nie wiedzą jak to zrobić a nie umieją uzywać google.com. :D // to wstawiamy np do FormCreate lub do jakiegoś przyciskuvoid __fastcall TForm1::FormCreate(TObject *Sender){ RegisterHotKey(Form1->Handle, 0x0001, MOD_CONTROL, VK_F4);}// to wstawiamy do FormClose lub do jakiegoś przyciskuvoid __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action){ UnregisterHotKey(Form1->Handle, 0x0001);} // to wstawiamy do kodu void TForm1::WMHotKey(TMessage& Message){ if(Message.WParam == 0x0001) { MessageBox(Handle,"Akcja!!!","",MB_OK); }} // to wstawiamy do klasy TForm1 do sekcji public: void WMHotKey(TMessage& Message); //przechwytywanie klawisza BEGIN_MESSAGE_MAP MESSAGE_HANDLER(WM_HOTKEY,TMessage,WMHotKey); END_MESSAGE_MAP(TComponent) Oto pełny listing: // dla pliku cpp //---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include "Unit1.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void TForm1::WMHotKey(TMessage& Message){ if(Message.WParam == 0x0001) { MessageBox(Handle,"Wciśnięto CTRL+F4","",MB_OK); } else if (Message.WParam == 0x0002) { MessageBox(Handle, "Wciśnięto ALT+F3" , "" , MB_OK); }}//---------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender){ RegisterHotKey(Form1->Handle, 0x0001, MOD_CONTROL, VK_F4); RegisterHotKey(Form1->Handle, 0x0002, MOD_ALT, VK_F3);}//---------------------------------------------------------------------------void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action){ UnregisterHotKey(Form1->Handle, 0x0001); UnregisterHotKey(Form1->Handle, 0x0002);}//--------------------------------------------------------------------------- // dla pliku h //---------------------------------------------------------------------------#ifndef Unit1H#define Unit1H//---------------------------------------------------------------------------#include <Classes.hpp>#include <Controls.hpp>#include <StdCtrls.hpp>#include <Forms.hpp>//---------------------------------------------------------------------------class TForm1 : public TForm{__published: void __fastcall FormCreate(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action);private:public: __fastcall TForm1(TComponent* Owner); void WMHotKey(TMessage& Message); BEGIN_MESSAGE_MAP // tworzymy mapę komunikatów MESSAGE_HANDLER(WM_HOTKEY,TMessage,WMHotKey); END_MESSAGE_MAP(TComponent)};//---------------------------------------------------------------------------extern PACKAGE TForm1 *Form1;//---------------------------------------------------------------------------#endif
-
Wskaźnik pokazuje na adres w pamięci gdzie znajduje się element o danym indexie tablicy, wskaźnik ma też w sobie wiedzę na temat typu elementów w tablicy (float , char) . Dysponując ta wiedzą , przesunięcie wskaźnika++ powoduje jego przsunięcie na kolejny obszar w pamięci, co jest jednoznaczne z przesunięciem i pokazaniem na następny element tablicy, to jest dokładnie to samo tylko wykonuje się na różnym poziomie rozumienia tej pracy. Jak to się dzieje... no coż, jest to już Assembler dla tęgich głów. :-P To jest tam dokładnie, niemal łopatologicznie wytłumaczone... ( Nie spotkałem się jeszcze z książką która by to dokładniej tłumaczyła tematykę wskaźników. Spójny obszar pamięci ? Czy chodzi ci o model pamięci ? ( tiny , small , . .. large ....) że jakiś model nie może przekroczyć powiedzmy 64KB ? A jeśli nie to podaj stronę bo nie pamiętam niczego takiego...
-
Pytanie jest trochę źle postawione, ja bym spytał : ile czasu zajęło wam uczenie się C++ do tego poziomu który prezentujecie teraz . A nie ile zajęło wam nauczenie się , bo żeby się nauczyć tak na prawdę to 6 lat nie twoje. A takie wyliczanie po pół roku jest wg mnie trochę nie na miejscu bo nie można z góry załozyć że po pół roku przejdzię sie poziom w górę, abstrakcja wg. mnie. To dobry znak że uczysz się kupę czasu , najwyraźniej odkrywasz co jakis czas nowe rzeczy i czas nauki jest uzależniony od poziomu poznanej wiedzy , nie wyliczaj sobie czasu bo w ten sposób nigdy się wszystkeigo dokładnie nie nauczysz. Poznanie wszystkiego z poziomu konsoli może trwać do 3 albo więcej lat ( dogłębne poznanie i całkowite rozkminienie ). Książki : Symfonia C++ (cały język) , Pasja C++ (Wyjątki i Template'y) , Thinking in C++ 1st i 2nd (mieszane uczucia) , Opisy bibliotek itd.
-
To był tylko przykład jest ich więcej , ale jednak mi sie wydaje że gc ma jednak dużo wspólnego z obiektowością bo powstał w wraz z ideą tego. Wiesz, ja wiem że na razie jest dość prosty i przyjemny do konkretnych zastosowań, ale MS jak to MS oni zawsze coś muszą spier.... , bo to jest już naturalne w przypadku tej firmy , przypadkowo czy celowo , ale jednak... <_< No ale odeszliśmy od tematu :lol: . W sumie do napisania tego możesz uzyć dowolnego RAD-u , czy to w wersji .net czy win32. Czy to Borlanda : Delphi 2005 , C# Builder , JBuilder , C++ Builder. Czy Microsofta : Visual Studio 2003 , ( basic , c# , java , c++ ) Zależy wyłącznie od upodobania. :D upd do poniżej : czysto obiektowy to znaczy taki w kórym nie ma cienia proceduralności... no co to znaczy to chyba nie muszę tłumaczyć , jak ktoś jest ciekawy to google.com i jazda... :D
-
Tablica będzie najlepszym rozwiązaniem oczywiście zakładam że używasz liczb Int64... var zmienna : Int64;
-
W pełni CZYSTO obiektowy jest TYLKO Smalltalk i Ruby. Dzięki pomysłom i rozwiązaniom ze Smalltalka, Java a potem i C# mają wiele jego cech (np. odśmiecacz pamięci itd.). Jeśli już wgłebiamy się w teorię obiektowości to C# jest z deczka mniej obiektowy niż Java ( jest pare powodów , których nie chce mi się pisać ). Ale jest lepiej dopracowany i dzięki temu że jest bardziej podobny do C++ daje trochę większe możliwości niż jego protoplasta - Java. Pełna obiektowość nie zdobyła dużej popularności ( dowód : Smalltalk / języki hybyrdowe , Obiektowe bazy danych / relacyjne ). Dlatego obecne języki które są popularne nie są czysto obiektowe mają pewne cechy proceduralności. Java i C# nie mają jeszcze żadnego standardu i warto czekać na to co MS i Sun tam popsują. Dla przykładu java rozrasta się mocno i powoli staję się tym czym być nie miała. No a MS w C# 2.0 może coś nieźle zamotać ( tradycyjnie jak to MS'hit ).
-
Wcale nie trzeba znać C# żeby korzystać z .NET , bo w tym środowisku można pisać też w Delphi , VBasic , C++ , Java . W .NET nie ma znaczenia w jakim języku piszesz bo to jest i tak dokładnie to samo ( klasy , metody itd.) :) Visual Studiu 2003 .NET ( C++ , C# , Java , Basic ) , Delphi 2005 ( Delphi , C# ) , C# Builder , a więc wybór jest duży... A co do sporów na temat języków obiektowych to żaden z wymienionych tu języków nie jest w pełni obiektowy. Jedynym wpełni obiektowym językiem jest Smalltalk ( tam nawet proste typy danych sa obiektami ) a żeby napisać nawet najprostrzy program trzeba wykorzystać wszystkie zalety obiektowości...
-
Żyjemy w wolnym kraju :-P. Chociaż .NET lepszy jest niż java vm...
-
W c++ to jest : try { // tu instrukcje w których spodziewamy sie błędu; }catch(...) { // instrukcje które mają nastąpić gdy ten błąd w try nastąpi lub puste } I cała filozofia. Zamiast tych 3 kropek w catch(...) może być np. catch(Exception &a) , wtedy to 'a' jest zmienną gdzie ten błąd jest umieszczony. Dla konkretnego przykładu może być catch(EStackOverflow &a) {ShowMessage("przepełnienie stosu") ; }
-
W Delphi jest podobnie jak w C++ Builder czyli wystarczy zrobić : Klikasz dwa razy na komponent StringGrid i tam wpisujesz taki kod: (trzeba dodać wcześnej na forme Label1 i Label2 , albo zamiast Label przypisać te wartości do jakiś zmiennych i potem je wykorzstać) //---------------------------------------------------- // pokazują na etykietach numery:: Label1.Caption := IntToStr(StringGrid1.Col) ; // kolumny Label2.Caption := IntToStr(StringGrid1.Row) ; // wiersza //---------------------------------------------------- W Builderze jest tak : Label1->Caption = StringGrid1->Row; // pokazuje który wiersz Label2->Caption = StringGrid1->Col; // pokazuje która kolumna W zasadzie w jest on przechowywany w takiej zmiennej do której go sobie przypiszesz a funkcje które go pokazują (np dla StringGrid1) to StringGrid1.Col i StringGrid1.Row.
-
Ponieważ jest to trochę chamska pentla ( for ) dlatego komponenty reagują tak jak reagują ( zbyt wolno :) ). W zasadzie problem rozwiąże dodanie do tej pentli metody Application->HandleMessage() ; która ogónie ma za zadanie przyznawanie priorytetu i reagowanie na "zamrażanie aplikacji". można ją stosować nie tylko do takich rzeczy ale do wielu innych. Najczęściej w pentlach które sprawiają podobne problemy... :) Czyli poprawny i optymalny kod wygląda tak (jeśli chcesz zobaczyć ten licznik w pracy): for(int i=0; i<this->iloscTestow; i++){ Application->HandleMessage(); NrTestLabel->Caption = IntToStr(numerTestu); this->numerTestu++; ProgressBar1->StepIt();} A takie pytanie czy nie lepiej dwie środkowe linijki załatwić w jednej ? // NrTestLabel->Caption = numerTestu++;
-
Mi sie wydaje to że jak wpisze sobie w Edit1 wyraz "zdanie" , to na Label albo na Edit pokaże się "122 100 97 110 105 101" . Tak powinien wyglądać Button1Click . void __fastcall TForm1::Button1Click(TObject *Sender){ int rozmiar = Edit1->Text.Length(); char * tablica = new char [rozmiar]; strcpy(tablica , Edit1->Text.c_str()); RichEdit1->Clear(); for ( int i = 0; i< rozmiar; i++) { RichEdit1->Lines->Add((int)tablica[i]); } Edit2->Text = RichEdit1->Text;} Oczywiście można to zrobić na wiele sposobów, krótszych i dłuzszych jeden z nich jest taki co podałem. Potrzebne są 4 komponenty na formie : 2 * edit , 1 * button , 1 * richedit . Co do bezposredniego wstawienia tablicy do edit a nie poprzez richedit to dokładnie nie wiem ( znakowo jest normalnie przypisaniem ) ale jeśli tablica zawiera liczby będące kodami acsi to ... ( no własnie trudno zinterpretować co ile ma elementów )