2015-07-01 2 views
0

Запуск моего приложения дает мне код ошибки 3, -1073741819 и -1073741510 Почему эти коды поступают вообще? Я имею в виду, что заставляет их отправлять себя в отладчик? Я попытался работать с файлом, используя QFile в Qt Framework. Мой код выглядит следующим образом (обратите внимание, что это антивирусное решение очень малой мощности):Код ошибки 3, -1073741819 & -1073741510

QFile VirusScanner(Current); 
while(!VirusScanner.atEnd()) { 
    QByteArray Line = VirusScanner.readLine(LONG_LONG_MAX); 
    if(Line.toLower() == "open=regsvr.exe" || Line.toLower() == "open=newfolder.exe") { 
     cout << "Autorun.inf virus detected. Deleteing..." << std::endl; 
     const QString Virus_Path = VirusScanner.fileName(); 
     VirusScanner.close(); 
     QFile::remove(); 
    } 
} 

После комментария Vahancho, я изменил код на следующее, но он дал мне код -1073741510 ошибки:

QFile VirusScanner(Current); 
VirusScanner.open(stdin , QFile::ReadOnly); 
while(!VirusScanner.atEnd()) { 
    QByteArray Line = VirusScanner.readLine(LONG_LONG_MAX); 
    if(Line.toLower() == "open=regsvr.exe" || Line.toLower() == "open=newfolder.exe") { 
     cout << "Autorun.inf virus detected. Deleteing..." << std::endl; 
     VirusScanner.remove(); 
    } 
} 
VirusScanner.close(); 
+0

Вам не нужно открывать файл 'VirusScanner'? Вам не нужно покидать свой цикл и перестать читать файл, который вы уже удалили? – vahancho

ответ

0

Вы должны использовать QTextStream, чтобы позаботиться о преобразовании, символах новой строки и т. Д. Итак, ваш , если оператор работает должным образом.

Кроме того, вы не должны открывать stdin, если хотите прочитать файл Current.

Учитывая, что это будет работать:

QString current = "some_file"; 
bool bHasVirus = false; 

QFile virusScanner(current); 
if (!virusScanner.open(QIODevice::ReadOnly | QIODevice::Text)) { 
    return -1; 
} 

QTextStream in(&virusScanner); 
while(!in.atEnd()) { 
    QString line = in.readLine(); 
    qDebug() << line.toLower(); 
    if(line.toLower() == "open=regsvr.exe" || line.toLower() == "open=newfolder.exe") { 
     // Virus detected! 
     bHasVirus = true; 
     break; 
    } 
} 

if(bHasVirus) { 
    qDebug() << "Virus detected. Deleteing..."; 
    virusScanner.remove(); // Will also close the file 
} else { 
    virusScanner.close(); 
} 

Примечание: Заглавные буквы, как правило, для классов, а не переменных.

Смежные вопросы