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

    splite New Member

    Joined:
    13 Jul 2012
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Здравствуйте, использую debian. Как получить исходный код какой-либо библиотеки? Например, QT, объявление хранится в /usr/include/.. , а определение?
     
  2. LookBehind

    LookBehind New Member

    Joined:
    18 Sep 2011
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    кто нибудь сталкивался с этой проблемой?
     
  3. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Есть сервер, который постоянно получает какие то данные, подскажите, как реализовать обработку полученных данных, не прерывая получения данных? То есть в буфер что то записалось, его содержимое копируется в другую переменную, и обработка данных ведется параллельно получению.
     
  4. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    ну так создавайте новый поток и обрабатывайте.
     
  5. Radist

    Radist New Member

    Joined:
    5 Jul 2012
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0
    Подскажите как изменить кодировку выводимых сообщений в режиме командной строки?(русские символы выводятся абра-кадаброй).
     
  6. j0sur

    j0sur Member

    Joined:
    8 Apr 2012
    Messages:
    140
    Likes Received:
    7
    Reputations:
    0
    Здесь есть несколько решений: http://www.rsdn.ru/forum/cpp/4378529.flat.aspx
    И вот еще(не так многабукаф): http://www.makak.ru/2008/02/19/vyvod-russkix-bukv-v-konsolnyx-prilozheniyax-na-c/
     
  7. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    Code:
    setlocale(LC_ALL, "Russian");
     
  8. Radist

    Radist New Member

    Joined:
    5 Jul 2012
    Messages:
    10
    Likes Received:
    0
    Reputations:
    0

    Спасибо, помогло :)
     
  9. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Проблема с установкой хука.
    Code:
    
    #include <iostream>
    #include <windows.h>
    using namespace std;
    
    
    int main()
    {
    HINSTANCE hookHandle = LoadLibrary("hook.dll");
    HMODULE  hook = GetModuleHandle("hook.dll");
    HOOKPROC ProcAdd = (HOOKPROC)GetProcAddress(hook, "KeyProc");
    if(!hookHandle) return 1;
    if(!(SetWindowsHookEx(WH_KEYBOARD, &ProcAdd, hookHandle, NULL))) return 2;
    }
    
    Выдает ошибку:
    Code:
    cannot convert 'LRESULT (**)(int, WPARAM, LPARAM)' to 'LRESULT (*)(int, WPARAM, LPARAM)' for argument '2' to 'HHOOK__* SetWindowsHookExA(int, LRESULT (*)(int, WPARAM, LPARAM), HINSTANCE__*, DWORD)'|
    
    Никак не могу понять в чем проблема.
     
  10. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Вопрос решился. В строке:
    Code:
    if(!(SetWindowsHookEx(WH_KEYBOARD, &ProcAdd, hookHandle, NULL))) return 2;
    
    Надо делать приведение типа:
    Code:
    if(!(SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)&ProcAdd, hookHandle, NULL))) return 2;
    
     
  11. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Code:
    #include <iostream>
    #include <string.h>
    #include <windows.h>
    using namespace std;
    
    int main()
    {
    char* str = "qwert1\nqwert2";
    char* buf = strtok(str, "\n");
    while (buf != NULL)
    {
       cout << buf << endl;
       buf = strtok(NULL, "\n");
    }
    return 0;
    }
    
    Падает после строки
    Code:
    char* buf = strtok(str, "\n");
    Что это может быть?
     
  12. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    http://www.cplusplus.com/reference/clibrary/cstring/strtok/
    Почитай пример внизу, подумай
     
    _________________________
  13. patcher

    patcher Banned

    Joined:
    15 Dec 2009
    Messages:
    190
    Likes Received:
    37
    Reputations:
    10
    замени
    Code:
    char* str = "qwert1\nqwert2";
    на
    Code:
    char str[] = "qwert1\nqwert2";
     
  14. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Спасибо, помогло.
     
  15. enzecoder

    enzecoder New Member

    Joined:
    29 Jul 2012
    Messages:
    45
    Likes Received:
    3
    Reputations:
    -1
    msimg32.dll прослойка между настоящей и екзешником, hijacking.
    При запуске приложения выдаёт ошибку: "Точка входа в процедуру TransparentBlt не найдена в библиотеке DLL msimg32.dll"
    Добавил функу в экспорт, дописал main.cpp:
    Code:
    extern "C" __declspec(dllexport) BOOL CALLBACK TransparentBlt(){return FALSE;}
    при компиле выдаёт ошибку:
    Code:
    ------ Build started: Project: main, Configuration: Release Win32 ------
    Build started 30.07.2012 21:33:08.
    InitializeBuildStatus:
      Touching "Release\main.unsuccessfulbuild".
    ClCompile:
      main.cpp
    main.cpp(14): error C2733: second C linkage of overloaded function 'TransparentBlt' not allowed
              main.cpp(14) : see declaration of 'TransparentBlt'
    
    Build FAILED.
    
    Time Elapsed 00:00:05.92
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    сообсна хде копать?

    исходники https://dl.dropbox.com/u/77070235/msimg32_src.zip
    сама прога http://rmansys.ru/download/rms5.3ru.zip
     
    #7395 enzecoder, 30 Jul 2012
    Last edited: 2 Aug 2012
  16. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Доброго времени суток всем. Есть несколько вопросов

    1. Пишу класс для работы с соц. сетью. Какие улучшения можно произвести в данной функции для оптимизации работы, а так же просто улучшения внешнего вида и "чистоты" кода? Вложенный тернарный оператор не особо радует глаз, но растягивать регулярку, зависящую от аргументов ф-ции на несколько строк не хотелось. Как лучше поступить в такой ситуации? Интересны тонкости. А так же флаг "bSomeData". Будет ли рациональнее всего выходить из цикла инкремента страницы таким способом? Или сделать еще один regex_search поверх цикла? (но мне этот вариант кажется не самым лучшим - будет зря теряться процессорное время на поиск вхождения, т.е. эффективность падает в два раза)

    PHP:
    int ODClient::ParseFriends(std::vector<std::string> *slUserIdsstd::vector<std::string> *slUserFiosunsigned int iGenderbool bOnlineOnly)
    {
        
    unsigned int iPage 1iParsed 0;
        
        
    std::tr1::regex pattern((std::string) (bOnlineOnly "onlineIcon.+?" "") + "<!--\\{\"showNav\".+?\"male\":" 
            (
    std::string) (iGender ? (iGender == "true" "false") : "") + 
            
    ".+?fio\":\"(.+?)\".+?userId\":\"(.+?)\"");

        
    std::vector<intcapture_indexes;
        
    capture_indexes.push_back(1);
        
    capture_indexes.push_back(2);

        
    sUrl "http://www.odnoklassniki.ru/dk?cmd=MyFriendsPageMRB&gwt.requested=" gwtHash "&st.cmd=userFriend";

        while(
    true)
        {
            
    curl_easy_setopt(curlCURLOPT_URL, (sUrl "&st.page=" IntToStr(iPage)).c_str());
            
    curl_easy_setopt(curlCURLOPT_HTTPGET1);
            
    sResult "";
            
    curlRes curl_easy_perform(curl);

            if(
    curlRes == CURLE_OK)
            {
                
    bool bSomeData false;
                const 
    std::tr1::sregex_token_iterator end;
                for(
    std::tr1::sregex_token_iterator i(sResult.begin(), sResult.end(), patterncapture_indexes); != end;)
                {
                    if(
    slUserFios != NULLslUserFios->push_back((*i).str()); ++i;
                    
    slUserIds->push_back((*i).str()); ++i;

                    if(!
    bSomeDatabSomeData true;
                    
    iParsed++;
                }

                if(!
    bSomeData) break;
                
    iPage++;
            } else if(
    curlRes == CURLE_OPERATION_TIMEDOUT || curlRes == CURLE_COULDNT_CONNECT)
                return 
    ERR_TIMEOUT;
            else
                return 
    ERR_UNKNOWN;
        }

        return 
    iParsed;
    }
    Одним словом, глядя на функцию, что вам хочется подправить и подкорректировать в ней?

    2. Какой тип линковки библиотеки libcurl лучше использовать, если меня совершенно не волнует размер получаемого на выходе файла? Нужно только одно - стабильная работа при 500+ потоках с использованием канала 300 мбит.

    Заранее спасибо за ответы.
     
    #7396 mailbrush, 3 Aug 2012
    Last edited: 3 Aug 2012
  17. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    зачем ты передаешь в функцию указатель на вектор?
     
  18. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    917
    Likes Received:
    492
    Reputations:
    724
    А чем юникс сокеты не угодили?
    Насколько я помню на них реализован xbtt, который держит количество активных сессий я скажу не малое, пример тому rutracker.
     
    _________________________
  19. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Чтобы записать юзериды и ФИО юзеров во внешние векторы.

    Решил не изобретать велосипед, и воспользоваться библиотекой, которая была написана специально для работы с HTTP-протоколом)
     
    1 person likes this.
  20. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    а ссылки зачем придумали?
     
    1 person likes this.
Thread Status:
Not open for further replies.