crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

kvak
  опции профиля:
сообщение 5.5.2010, 4:22
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 51
Регистрация: 5.5.2010
Пользователь №: 1690

Спасибо сказали: 1 раз(а)




Репутация:   0  


Здравствуйте. Не могли бы вы посмотреть на исходники во вложении и сказать что в них неправильно. И поправить. Там маленькая программка. Задача в том, чтобы открыть log.txt и отобрать из него вхождения для каждого случая, если они встретятся. Мне кажется, что по идее все должно работать, но что-то я недопонимаю. После компиляции почему-то не хочет выполнять цикл и приложение не отвечает.
Кстати, в с++ можно задавать в цикле for по два инициализатора и два инкримента, типа такого ?
for (int index = 0, int c =0 ; index != -1; index++, c++ )
{
...
}
Если да, то почему-то при компиляции это считалось ошибочным.
Прикрепленные файлы
Прикрепленный файл  PACKAGE.zip ( 7.54 килобайт ) Кол-во скачиваний: 144
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 5.5.2010, 15:06
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Litkevich Yuriy @ 5.5.2010, 16:44) *
index != -1;
цикл прервётся только при не выполнении этого условия

Я сделал так:
Раскрывающийся текст
void MyProg::analize()
{
    QString fileName;
    fileName = fpath->text(); 
    QFile file(fileName);                                                
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        QMessageBox::warning(this
                             ,tr("Vmaanalize")
                             ,tr("Cannot read file %1:\n%2.")
                                .arg(fileName)
                                .arg(file.errorString())
                            );
        return;
    }


//////////////////////////////start/////////////////////////
    const QString slesh = "/";
    const QString end = "\n";
    const QString equ = " = ";
    QString two;
    

    QTextStream out(stdout);
    
    const int size = vxod.size();     //число инструкций из базы данных
    int cnt = 0;
    while  (!file.atEnd()){
        QString line = file.readLine();
        cnt++;
        out << "[" << cnt << "] line = " << line;
        QApplication::processEvents();
        for (int a = 0; a < size; a++){
            if (line.contains(vxod[a])){
                out << " - OK";
                summary[a]++;
            }
        }
        out << endl << flush;
    }

    for (int a = 0; a < size; a++){ 
        QString result = (vxod[a]);
        two = two.setNum(summary[a]);
        result = result + equ + two + end;
        comit->insertPlainText(result);
    }    

    return;

}


нет смысла проверять всю строку, т.к. в асемблере одна строка - одна инструкция

А еслиб и было то можно было бы сделать так:
Раскрывающийся текст
for (int a = 0; a < size; a++){
    int i = line.count(vxod[a])
    if (i){
        out << " - OK";
        summary[a] += i;
    }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 16.6.2025, 13:13