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

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    еще можно взять C++/CLI написать DLL которая
    будет давать возможность юзать библиотеку .NET из чисто нативного языка ...

    а вообще странные выбор ... хочется что то из .NET но сам NET нельзя ... почему ?

    берите C++/CLI да колбасьте там можно и натив и менеджед смешивать ... сила ...
     
    1 person likes this.
  2. greki_hoy

    greki_hoy Member

    Joined:
    4 Mar 2010
    Messages:
    326
    Likes Received:
    57
    Reputations:
    41
    это из за дизайна языка ...

    так как тут по сти две операции снять элемент с вершины ... и скопировать результат ....

    если на втором шаге будет исключение то этот элемент мы навсегда потеряем ...

    поэтому есть операция .top которая сначала копирует элемент а затем вызывается .pop
     
  3. weInc

    weInc New Member

    Joined:
    29 Mar 2012
    Messages:
    40
    Likes Received:
    3
    Reputations:
    0
    non-block winsock



    Здравствуйте, собственно прошу помощи по функции recv() winsock2, функция зависает когда нету данных от сервера, насколько знаю нужны неблокирующие сокеты, информации толком то и не нашел, может кто знает хорошие источники по non-block, может кто поможет код модифицировать, сам попробую разобраться.

    Code:
    #include <clocale>
    #include <iostream>
    #include <stdio.h>
    #include <winsock2.h>
    using namespace std;
    
    int main(int argc, char *argv[]){
    setlocale(LC_ALL,"Russian");
    
    WSADATA ini;
    SOCKET sock;
    struct sockaddr_in addr;
    int PORT,sizeRecv = 0, sizeSend = 0;
    char SERVERADDR[64];
    char input[1024];
    char output[1024];
    
    printf("SERVER ADDR: "); cin >> SERVERADDR;
    printf("SERVER PORT: "); cin >> PORT;
    
    if(WSAStartup(0x202,&ini) < 0){ printf("Ошибка инициализации\n"); }
    if((sock = socket(AF_INET,SOCK_STREAM,0)) < 0){ printf("Сокет не создан\n"); }
    
    addr.sin_family = AF_INET;
    addr.sin_port = htons(PORT);
    addr.sin_addr.s_addr = inet_addr(SERVERADDR);
    
    if((connect(sock,(sockaddr *)&addr,sizeof(addr))) < 0){ printf("Ошибка соединения\n"); }else{
    
    printf("Соедние с %s установленно\n",SERVERADDR);
    
    while(1){
    
    sizeRecv = recv(sock,input,sizeof(input),0);
    input[sizeRecv] = 0;
    if(sizeRecv > 0){ printf("\nMsg:> %s\n",input); }
    if(sizeRecv < 0){ printf("\n Ошибка приема данных от %s\n",SERVERADDR); }
    sizeRecv = 0;
    
    cout << "Client:> ";
    cin >> output;
    
    	if(!strcmp(output,"exit")){
    		closesocket(sock);
    		WSACleanup();
    		exit(1);
    		}
    		
    if(output!=""){ sizeSend = send(sock,output,sizeof(output),0); }
    if(sizeSend < 0){ printf("Не удалось отправить данные на %s\n",SERVERADDR); }
    
    	}
    
    }
    
    return 0;
    }
    

     
  4. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    weInc, читай здесь про функции ioctlsocket, select, recv, send.
     
  5. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Если в файле 10000000 строк, а мне надо прочитать, допустим, 10000-ю. Как можно ее прочитать?
     
  6. Brain777

    Brain777 New Member

    Joined:
    27 Jan 2013
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    Можно узнать: чем отличаются версии Microsoft Visual C++ 2008 Express Edition и Standart? Знаю, что вторая - платная, но она стоит того (есть возможность взять "на шарика")?
     
  7. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    Читать в цикле построчно 10000 раз.
    http://www.cplusplus.com/reference/istream/istream/getline/
     
  8. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Думал есть другие варианты.
     
  9. Spot

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

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    ТЫЦь
     
  10. JohnnyBGoode

    JohnnyBGoode Member

    Joined:
    5 Oct 2010
    Messages:
    48
    Likes Received:
    11
    Reputations:
    5
    Никто с такой проблемой в Visual C++ 2010 не сталкивался ?
    Code:
    1>Ошибка: Internal CPS Error: The Solution Build Manager was expected to have called BeginBuild by now.
    ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
    Абсолютно на ровном месте возникает
    И не впервой это уже,а помогает только переустановка
     
  11. Brain777

    Brain777 New Member

    Joined:
    27 Jan 2013
    Messages:
    18
    Likes Received:
    0
    Reputations:
    0
    JohnnyBGoode, на 2010 версию многие жаловались с разных сторон и на разные глюки. Пробуй лучше 2008. Стабильнее работает.
     
  12. 0xd098d0b3d0

    0xd098d0b3d0 New Member

    Joined:
    26 Oct 2012
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    Ребята, подскажиет как считать значение из текс файла на сервере в spinedit C++ ?
    Файл состоит из 1 цифры.
    IdHTTP1->Get("http://mysite.ru/thisfile.txt", SpinEdit1->Value);
    Выдает вот это.
    [bcc32 Error] updatebot.cpp(26): E2285 Could not find a match for 'TIdCustomHTTP::Get(const char *,long)'
     
  13. 0xd098d0b3d0

    0xd098d0b3d0 New Member

    Joined:
    26 Oct 2012
    Messages:
    54
    Likes Received:
    1
    Reputations:
    0
    Я так понимаю типы переменных не совпадают, как их привести к одному?
     
  14. Eich3

    Eich3 Member

    Joined:
    27 Jan 2013
    Messages:
    22
    Likes Received:
    7
    Reputations:
    5
    Попробуй так:

    SpinEdit1->Value = IdHTTP1->Get("http://mysite.ru/thisfile.txt").ToInt();

    Вариант метода IdCustomHTTP::Get в данном случае принимает URL и возвращает string с телом ответа. Если там только число, умещающееся в int, то конверсия пройдет успешно. Иначе будет exception.
     
    1 person likes this.
  15. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    #include <mmdeviceapi.h>
    -
    fatal error: mmdeviceapi.h: No such file or directory

    что не так?
    где взять этот mmdeviceapi.h?
     
  16. DeepBlue7

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

    Joined:
    2 Jan 2009
    Messages:
    359
    Likes Received:
    50
    Reputations:
    12
    https://subversion.assembla.com/svn/portaudio/portaudio/trunk/src/hostapi/wasapi/mingw-include/mmdeviceapi.h
     
  17. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    Спасибо.
    я правда уже сам нашел)
    теперь другая проблема возникла - оно не компилится(
    вот такая конструкция -
    Code:
    #include <stdio.h>
    #include <windows.h>
    #include <mmdeviceapi.h>
    int main(){
        return 0;
    }
    
    при компиляции выдает
    === Build finished: 5030 errors, 561 warnings (1 minutes, 53 seconds) ===
    ошибки в *.h подключаемых из mmdeviceapi.h
     
  18. mrDebian

    mrDebian Member

    Joined:
    27 Jan 2013
    Messages:
    96
    Likes Received:
    13
    Reputations:
    10
    Может быть ты тоже нашел для mingw версии? (как в посте выше)
     
  19. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    да,наверняка.а для какой версии надо?
     
  20. mrDebian

    mrDebian Member

    Joined:
    27 Jan 2013
    Messages:
    96
    Likes Received:
    13
    Reputations:
    10
    Для VS я полагаю. Не знаю чем ты компилиш.
     
Loading...
Thread Status:
Not open for further replies.