Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 28.03.2018, 14:51   #1
BlackMesa
 
Регистрация: 28.03.2018
Сообщений: 3
Репутация: 10
По умолчанию 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;                       
}

Изображения
 
BlackMesa вне форума   Ответить с цитированием
Старый 28.03.2018, 15:31   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,277
Репутация: 2465
По умолчанию

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

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

Ну так вставьте проверку на resultsSize и все.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 28.03.2018, 19:34   #5
BlackMesa
 
Регистрация: 28.03.2018
Сообщений: 3
Репутация: 10
По умолчанию

в общем не работает метод
Код:

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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
subscript out of range Katiy2002 Microsoft Office Excel 16 02.03.2018 22:08
Ошибка Subscript out of range ольгаг Microsoft Office Excel 5 01.10.2017 12:06
expression:vector subscript out of range whoami30 Общие вопросы C/C++ 7 18.12.2015 12: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


07:59.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru