[ C / C++ ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Filosof_77

    Filosof_77 New Member

    Joined:
    6 Aug 2009
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    ну типа в МФЦ приложении при нажатие на елемент лістБокс в соседнем елементе СтатікТекст отображалась набпись с какимто цветом... а при нажатии следуещего елемента....на том Статіке отображалась надпись но уже з другим цветом...
     
  2. Mozy

    Mozy Member

    Joined:
    15 Mar 2009
    Messages:
    52
    Likes Received:
    34
    Reputations:
    6
    2 Aleksandr.
    Ты забыл указать пространство имён STD

    либо пишешь
    Code:
    #include <iostream>
    using namespace std;
    
    int main()
    {
    cout << " Hello World!\n";
    return 0;
    }
    
    либо указываешь пространство имён явно
    Code:
    #include <iostream>
    
    int main()
    {
    std::cout << " Hello World!\n";
    return 0;
    }
    
     
  3. оlbaneс

    оlbaneс Moderator

    Joined:
    5 Nov 2007
    Messages:
    1,376
    Likes Received:
    1,093
    Reputations:
    356
    2алесандр. прочитай https://forum.antichat.ru/threadnav89681-12-40.html с 477 коммента и до конца.
    там расписано.
     
    _________________________
    #4443 оlbaneс, 19 Dec 2009
    Last edited: 19 Dec 2009
  4. anasta

    anasta New Member

    Joined:
    11 Jun 2009
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Можно ли как-нибудь реализовать отправку e-mail по средствам C?
     
  5. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Какой компонент нужен для работы с графами в C++ Builder и рисование (карта сети) по хаб устройствам ?

    Для C++ Builder v6 или RAD Studio 2010, или где посмотреть пример работы Boost Graph Library для виндовс ? :)
     
  6. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    По графам в бусте даже небольшая книга написана, так и ищи в гугле "C++ Boost Graph Library book"
     
  7. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Code:
    // Yuri Zarechny for News2News (c) 2006 
     
    #include "stdafx.h"
    //#include < windows.h >
    #include < winsock2.h >  //link ws2_32.lib
    #include "conio.h" 
     
    struct _sendmail {
        LPSTR host;
        LPSTR IP;
        LPSTR sender;
        LPSTR recip;
        LPSTR subject;
        LPSTR body;
        SOCKET hSocket;
    } sendmail;
     
    BOOL InitSock(LPSTR Server)
    {
        WSADATA wsd;
        if (WSAStartup(MAKEWORD(2,2), &wsd) > 0)
        {
            printf("Winsock init error: %d\n", WSAGetLastError());
            return false;
        }
        return true;
    }
     
    LPSTR GetIP(LPSTR h)
    {
        in_addr ia;
        hostent* hbn;
        unsigned int addr;
     
        if (isalpha(h[0])) hbn = gethostbyname(h);
        else
        {
            addr = inet_addr(h);
            hbn = gethostbyaddr((char *)&addr, 4, AF_INET);
        }
     
        if (hbn==0) return "";
        ia.S_un.S_addr=*(DWORD *)hbn->h_addr_list[0];
        return inet_ntoa(ia);
    }
     
    BOOL ValidateEnvelope(LPSTR h, LPSTR r, LPSTR s, LPSTR *ip)
    {
        if (h=="" || r=="" || s=="")
        {
            printf("Invalid host or sender/recipient email address\n");
            return false;
        }
        *ip=GetIP(h);
        if (*ip=="")
        {
            printf("Can not resolve host name %s to ip address\n", h);
            return false;
        }
        return true;
    }
     
    BOOL ConnectTo()
    {
        const u_short SMTP_PORT=25;
        sockaddr_in sa;
        sa.sin_family=AF_INET;
        sa.sin_addr.S_un.S_addr=inet_addr(sendmail.IP);
        sa.sin_port=htons(SMTP_PORT);
        return (connect(sendmail.hSocket, (SOCKADDR *)&sa, sizeof(sa))==0); 
    }
     
    BOOL snd(LPSTR txt, bool resp)
    {
        char tx[4096];
        sprintf(tx, "%s\r\n", txt);
     
        if (send(sendmail.hSocket, tx, strlen(tx),0)==SOCKET_ERROR)
        {
            printf("%s%s\n", tx, " - send operation failed.");
            return false;
        }
        if (!resp) return true;
     
        while (true)
        {
            char rcv[1024];
            char outp[255]="";
     
            HANDLE hEvent=WSACreateEvent();
            WSAEventSelect(sendmail.hSocket,hEvent,FD_READ);
            DWORD nWait=WSAWaitForMultipleEvents(1, &hEvent, 0, 1000, 0);
            WSACloseEvent(hEvent);
            if (nWait!=0) return false; 
            recv(sendmail.hSocket, rcv, sizeof(rcv),0);
     
            strncpy(outp, rcv, strcspn(rcv, "\n")+1);
            printf("%s\n", outp);
        }
        return true;
    }
     
    BOOL SendMail()
    {
        if (!ValidateEnvelope(sendmail.host, sendmail.recip, 
            sendmail.sender, &sendmail.IP)) return false;
     
        char tmp[255];
        if (sendmail.sender=="" || sendmail.recip=="" ||
            sendmail.body=="" || sendmail.subject=="") return false;
     
        sendmail.hSocket=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        if (sendmail.hSocket==SOCKET_ERROR) return false; 
     
        if (!ConnectTo())
        {
            printf("Unable to connect to the server.\n");
            return false;
        }
        snd("HELO", true);
     
        sprintf(tmp, "%s%s%s", "MAIL FROM:<", sendmail.sender, ">");
        snd(tmp, true);
        sprintf(tmp, "%s%s%s", "RCPT TO:<", sendmail.recip, ">");
        snd(tmp, true);
     
        snd("DATA", true);
        sprintf(tmp, "%s%s", "From: ", sendmail.sender);
        snd(tmp, false);
        sprintf(tmp, "%s%s", "To: ", sendmail.recip);
        snd(tmp, false);
        sprintf(tmp, "%s%s", "Subject: ", sendmail.subject);
        snd(tmp, false);
        snd("", false);
        snd(sendmail.body ,false);
        snd(".", true);
     
        snd("NOOP", true);
        snd("QUIT", true);
        closesocket(sendmail.hSocket);
     
        return true;
    }
     
    void _tmain() {
        // provide valid host name and email addresses 
        sendmail.host = "smtp.myisp.ca";
        sendmail.sender = "[email protected]";
        sendmail.recip = "[email protected]";
     
        sendmail.subject = "Testing Winsock SMTP functionality";
        sendmail.body = "Test message:\n\n" 
            "Windows Sockets (Winsock) provides a general-purpose networking " 
            "application programming interface (API) based on the socket "
            "interface from the University of California at Berkeley.\n";
     
        if (InitSock(sendmail.host))
        {
            SendMail();
            WSACleanup();
        }
     
        printf("\nPress ENTER to quit");
        getch(); 
        return;
    }
     
  8. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    есть какая то альтернатива постройки карты сетей (+ подсети из Switch тоже выводить) ?
     
    #4448 PandoraBox, 19 Dec 2009
    Last edited: 19 Dec 2009
  9. Lee_fx

    Lee_fx Elder - Старейшина

    Joined:
    27 Sep 2008
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    Вывождение ну зачем так людей пугать)
     
  10. SaiRus

    SaiRus Elder - Старейшина

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    как раз пишу, только на билдере, могу дать сам функцию подставишь...только она не только график выводит...


    Собственно мой вопрос
    - язык с++ билдер
    -имеется юнит1.h, юнит2.h
    -в юнит1.cpp прописан класс, в классе функция fx(х) вычисляет функцию по х

    немогу заюзать класс в юнит2.h как понял надо extern'ом тащить, класс вытаскиваю, дальше пытаюсь определить переменную для этого класса ни хера кароче...как правильно подключить этот класс? спасибо
     
  11. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Подобные запросы пишем в соседнюю тему с лабами, тут задаем конкретные вопросы.

    Немного не ясно что тебе необходимо сделать, поподробней ...

    У тебя в юнит1.h обьявление класса, в юнит1.срр реализация так?
    инклюдь сюда первый хэдэр.
     
    #4451 razb, 20 Dec 2009
    Last edited: 20 Dec 2009
  12. SaiRus

    SaiRus Elder - Старейшина

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    юнит1:
    грубо говоря

    Code:
    class myClass
    	{
    	 float x;
    
    
    	 public:
    	 float adr,bdr,n,a1,b1,c,x2,x3,x1,Xmin,Ymin,h1,eps1,num;
    	 bool flagForm3,FlagF;
    	 int k;
    	 float AllEx[3];
    
    
     //--------------------------Функция---------------------
    	 float fx(float num)
    	 {
          x=num;
          return (2*x*x-12.5)*cos(x);
    	 }
    //тут еще функции
    
    }
    myClass calculate;
    
    //........и дальше текст еще проги..............
    
    
    юнит2
    Code:
    #include "Unit1.h"
    
    void __fastcall TForm3::FormShow(TObject *Sender)
    {float a,b,h,Y;
    	int x0,y0;
    a=StrToFloat(Form1->Edit1->Text);
    b=StrToFloat(Form1->Edit2->Text);
    Y=calculate.fx(a);
    h=StrToFloat(Form1->Edit3->Text);
    }
    говорит не определенный символ calculate и в юнит2 если написать myClass calculate; в объявлении переменных говорит ошибка описания переменных, хотя инклудить не рекомендуют но мне уже чет пофиг, но как то можно еще extern'ом, ваще инфу не могу найти...
    ПС: реализация в юнит2, а описание в юнит1...
     
    #4452 SaiRus, 20 Dec 2009
    Last edited: 20 Dec 2009
  13. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    зачем объект объявляешь прямо в хидере с описанием класса? его обычно объявляют в том классе, который будет его использовать. так же у тебя будут проблемы, когда ты проинклюдишь этот класс более чем в одном файле. нужно будет ставить модификатор static.
     
  14. razb

    razb Active Member

    Joined:
    24 Mar 2009
    Messages:
    658
    Likes Received:
    133
    Reputations:
    18
    Короче так, делаешь в unit1.h обьявление твоего класса в unit1.cpp реализация,
    в unit2.h я так понимаю обьявление класса формы там и добавляешь переменную своего класса и создаешь экземпляр класса(в куче/стеке как хочешь)

    п.с. лучше избегать обьявления глобальных переменных.
    п.п.с. всю реализацию желательно выноси в .срр файлы что бы потом путаницы небыло.

    та я думаю борланд протект на хэдэры ifndef/define ставит ))
     
    #4454 razb, 20 Dec 2009
    Last edited: 20 Dec 2009
  15. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    проектирование и разработка системы для тестирование работоспособности сети (в графическом виде)

    [​IMG]
     
    #4455 PandoraBox, 20 Dec 2009
    Last edited: 20 Dec 2009
  16. SaiRus

    SaiRus Elder - Старейшина

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    подожди, это коды были файлов срр а не хеадеров, в
    юнит1.срр объявляется myclass calculate, потому что тут вычисляются методы, половинное деление, дробного шага и т.д., а юнит2.срр это форма которая показывает график функции (2*x*x-12.5)*cos(x), а эта функция вычисляется функцией
    Code:
    float FX( float X)
    {
    return (2*x*x-12.5)*cos(x)
    }
    и соответственно она является методом myclass, кароче ппц )))))))

    [QUOTE =razb]Короче так, делаешь в unit1.h обьявление твоего класса в unit1.cpp реализация[/QUOTE]
    так и есть
    [QUOTE =razb]
    в unit2.h я так понимаю обьявление класса формы там и добавляешь переменную своего класса и создаешь экземпляр класса(в куче/стеке как хочешь)[/QUOTE]
    по подробнее нельзя? :) объявление класса формы есть, где тут указать мой класс

    Code:
    class TForm2 : public TForm
    {
    __published:	// IDE-managed Components
    	TChart *Chart1;
    	TLineSeries *Series1;
    	TCustomTeeFunction *TeeFunction1;
    	void __fastcall FormShow(TObject *Sender);
    private:	// User declarations
    public:		// User declarations
    	__fastcall TForm2(TComponent* Owner);
    };
    ладно ща книжку нашел Архангельский еще читану, вроде по классам
     
    #4456 SaiRus, 20 Dec 2009
    Last edited: 20 Dec 2009
  17. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    да, лучше почитай книжку. это основы, в первых главах объясняются.
     
    1 person likes this.
  18. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    SaiRus, вот еще глянь такой способ подстановки функции http://www.rsdn.ru/article/files/Classes/tparser.xml
     
    1 person likes this.
  19. SaiRus

    SaiRus Elder - Старейшина

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    Спасибо парни, на самом деле более - менее понял структуру :)
    но щас пытаюсь понять следующее, почему мой созданый класс не понимает
    такой строчки

    Code:
    Form2->Memo1->Lines->Add("Метод дробного шага:");
    как сделать что бы он унаследовал объекты класса TForm2, конечно можно описать функции в самом классе, но охота собственный класс что бы препод не до копался :)

    Code:
    void TForm2 :: PL_DEL(float a,float b,float eps)
    уже так сделал, все равно при выводе в мемо1 к примеру ошибку выкидывает...
    не понял в чем фишка, но сделал...фсе спать, завтра разбираться как так получилось )))))
     
    #4459 SaiRus, 20 Dec 2009
    Last edited: 20 Dec 2009
  20. PandoraBox

    PandoraBox Elder - Старейшина

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    Code:
    #include "Form2.h"
    это в файл Form1.cpp например обяви и дальше мути что хочешь

    [ extern <тип_данных> <имя_переменно> ] нужен для того чтобы обявить что вы можете по его точному имени получить данные с переменных с такм же именем в другом cpp файле, где указан <тип_данных> <имя_переменно> без extern !
     
    #4460 PandoraBox, 20 Dec 2009
    Last edited: 20 Dec 2009
Thread Status:
Not open for further replies.