Regex & Неверное выражение нулевого указателя

0

Я нашел этот сайт из Google, и я предполагаю, что здесь люди помогают в проблемах с кодированием.

Я создаю фильтр "badword" для приложения, но у меня возникли проблемы. В настоящее время я создаю поток из точки входа приложений, и поток потоков выглядит следующим образом:

while(true)
{

    if (!OpenClipboard(NULL))
        ExitProcess(0); //TODO: Try opening clipboard again.

    h = GetClipboardData(CF_TEXT); //h is HANDLE.

    std::string CB_Data = (char*)h;

    if(CB_Data.size() != NULL) //An attempt to check if it not empty
    {
        if ( std::regex_search(CB_Data.c_str(), BADWORD_FILTER))
        {
            try
            {
                EmptyClipboard();
                SetClipboardData(CF_TEXT, INFORMATION); //INFORMATION is converted to char from HANDLE. INFORMATION = "Bad word filter detected forbidden words pattern."
            }
            catch(...)
            {
                //TODO: Error logging
            }
        }

        else if ( std::regex_search(CB_Data.c_str(), BADWORD_FILTER2))
        {
            try
            {
                EmptyClipboard();
                SetClipboardData(CF_TEXT, INFORMATION); //INFORMATION is converted to char from HANDLE. INFORMATION = "Bad word filter detected forbidden words pattern."
            }
            catch(...)
            {
                //TODO: Error logging
            }
            EmptyClipboard();
            SetClipboardData(CF_TEXT, INFORMATION); //INFORMATION is converted to char from HANDLE. INFORMATION = "Bad word filter detected forbidden words pattern."
        }
    }

    CloseClipboard();
    Sleep(1000); //Check every 1 second for the forbidden words.
}

Таким образом, это приложение контролирует буфер обмена из запрещенных слов. Однако большую часть времени я сталкиваюсь с выражением "Expression: Invalid null point" -error, и я не знаком с отладчиком Visual Studio. Я пробовал, но явно не добился успеха.

Вот ошибка: http://i.stack.imgur.com/wACnA.png

Любая помощь будет принята с благодарностью, спасибо.

  • 0
    Ваша ошибка говорит о том, что исключение произошло в строке 930. Какая строка в опубликованном вами фрагменте - 930?
  • 0
    Строка 930 от ../include/xstring - которая включена из #include <regex>
Показать ещё 1 комментарий
Теги:
filter
expression
crash

1 ответ

0

Вы получаете сообщение об ошибке, потому что GetClipboardData() не возвращает указатель const char* а конструктор std::string пытается прочитать ваш параметр как const char*.

Как вы заявляете в вопросе, GetClipboardData() возвращает HANDLE. См. Эту тему для правильного примера использования этой функции.

Другие полезные советы:

  • Нажмите кнопку "Повторить", и вы приземлитесь в отладчике. Используя отладчик, вы можете точно видеть, где ваша программа поступила не так
  • CB_Data.size() - целое число без знака (длина строки), а не указатель. Не сравнивайте его с NULL !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню