Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2018, 13:51   #1
BlackMesa
 
Регистрация: 28.03.2018
Сообщений: 3
По умолчанию Vector subscript out of range - Visual C++

Осталась одна ошибка (ошибка вылетает только на других компах, на компютере где происходит компиляция данной ошибки нет):
vector subscript out of range
скрин в атаче

вектор используется только при загрузке файла (добавляем строки в вектор push_back) в процедуре поиска

Код:
vector<string> signBase; //(MAX_PATH);
Код:
bool scanSig(string path, int signCount)
{
    InitConsole();
    FILE *in1 = fopen(path.c_str(), "rb");
    if (!in1) cout << "Couldn't open file";
    for (int wsignCount = 0; wsignCount < signCount; wsignCount++)
    {
        //Convert string vector to int
        istringstream iss(signBase[wsignCount]);
        vector<string> results(istream_iterator<string>{iss},
            istream_iterator<string>());
        reverse(results.begin(), results.end());
        vector <int> signInt(results.size());
        //cout << "check: " << signBase[wsignCount] << endl;
        int resultsSize = results.size();
 
        for (int i = 0; i < results.size(); i++)
        {
            stringstream ss;
            ss << hex << results[i];
            int x;
            ss >> x;
            signInt[i] = x;
        }
 
        //unsigned char buf[26000];
        unsigned char buf[MAX_PATH];        
        int z = 0;
        size_t count;
        //while (count = fread(buf, sizeof(buf[0]), 26000, in1)) {
        while (count = fread(buf, sizeof(buf[0]), MAX_PATH, in1)) {
            int i;
            for (i = 0; i < count; ++i) {
 
                if ((int)buf[i] == signInt[0])
                {
                    for (z = 1; z < resultsSize; z++)
                    {
                        if (buf[i - z] != signInt[z]) break;
                    }
                    if (z == resultsSize)
                    {
                        detectedSignature = signBase[wsignCount];
                        detectedPath = path;
                        botFound = true;
                        cout << "Detected: " << path << endl << signBase[wsignCount]  << endl;
                    }
                }
                sleepCount++;
                if (sleepCount == 3000)
                {
                Sleep(6);
                sleepCount = 0;
                }
            }
        }
 
 
    }
    fclose(in1);
    return 0;                       
}
Изображения
Тип файла: jpg ошибка.JPG (38.5 Кб, 60 просмотров)
BlackMesa вне форума Ответить с цитированием
Старый 28.03.2018, 14:31   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

У вас возможны ситуации, что signInt окажется пустым. Но вы без проверок обращаетесь к элементу с индексом 0.
p51x вне форума Ответить с цитированием
Старый 28.03.2018, 14:34   #3
BlackMesa
 
Регистрация: 28.03.2018
Сообщений: 3
По умолчанию

А сможете исправить эту ошибку? С меня на пиво =)
BlackMesa вне форума Ответить с цитированием
Старый 28.03.2018, 16:22   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Ну так вставьте проверку на resultsSize и все.
p51x вне форума Ответить с цитированием
Старый 28.03.2018, 18:34   #5
BlackMesa
 
Регистрация: 28.03.2018
Сообщений: 3
По умолчанию

в общем не работает метод
Код:
string getStringFromURL(char* szUrl) //Функция получения текстовой строки с сайта 
{ 
string allData; 

HINTERNET hInternet = InternetOpenA("Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv 11.0) like Gecko", INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); 
HINTERNET hRequest = InternetOpenUrlA(hInternet, szUrl, NULL, 0, 0, 0); 

if (hRequest) { 
DWORD dwRead; 
char szTemp[1024]; 
while (InternetReadFile(hRequest, szTemp, 1024, &dwRead)) { 
if (!dwRead) { 
break; 
} 
allData += szTemp; 
} 
} 
InternetCloseHandle(hRequest); 
InternetCloseHandle(hInternet); 
return allData; 
}
и не понятно почему
не грузит строку с сайта
BlackMesa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
subscript out of range Katiy2002 Microsoft Office Excel 16 02.03.2018 21:08
Ошибка Subscript out of range ольгаг Microsoft Office Excel 5 01.10.2017 11:06
expression:vector subscript out of range whoami30 Общие вопросы C/C++ 7 18.12.2015 11:12
subscript out of range Bape}l{ka Microsoft Office Excel 2 31.10.2011 12:54
Subscript out of range amator_roma Помощь студентам 1 04.07.2011 11:32