out+="Таблица переменных - 2\n";

       addtable(Vars, out);

       out+="Таблица чисел - 3\n";

       addtable(Nums, out);

       out+="Таблица строковых констант - 4\n";

       addtable(Strs, out);

       out+="Таблица знаков - 5\n";

       addtable(Znaks, out);

        ui. SAnalys->setText(out);

//Запись результатов в файлы:

               //Преобразование главной таблицы

               QString lecsems="Таблица лексем\n";

               lecsems+=QString("%1 |%2 |%3 |%4\n").arg(QString("Табл"),4).arg(QString("#"),4).arg("Лексема",20).arg("Координаты",6);

               for (int k=0;k<lecs. count();k++)

                       lecsems+= QString("%1 %2 %3 %4\n").arg(QString::number(lecs[k].tab_cod),4).arg(QString::number(lecs[k].lec_cod),4).arg(lecs[k].value,20).arg(lecs[k].point,6);

               lecsems+="";

       QFile file;

       QString curDir=Filename. left(Filename. lastIndexOf("/"));

       QString filename;

               //Запись главной таблицы (файл mainTable. txt)

НЕ нашли? Не то? Что вы ищете?

               filename=curDir+"/"+"mainTable. txt";

               file. setFileName(filename);

               if( file. open(QIODevice::WriteOnly))

               {

                       QStringList list=lecsems. split("\n");

                       QTextStream in(&file);

                       for (int k=0;k<list. size();k++)

                       {

                               list[k]+="\n";

                               in << list[k];

                               in << QString();

                       }

               }

               else { ui. statusBar->showMessage(QString("Ошибка обработки файла mainTable. txt")); return;}

               file. close();

               //Запись остальных таблиц (файл allTable. txt)

               filename=curDir+"/"+"allTable. txt";

               file. setFileName(filename);

               if( file. open(QIODevice::WriteOnly))

               {

                       QStringList list=out. split("\n");

                       QTextStream in(&file);

                       for (int k=0;k<list. size();k++)

                       {

                               list[k]+="\n";

                               in << list[k];

                               in << QString();

                       }

               }

               else { ui. statusBar->showMessage(QString("Ошибка обработки файла allTable. txt")); return;}

               file. close();

               //Запись протокола (файл Result. txt)

               QString result="Лексический анализ кода из файла:\n"+Filename+"\n"+"Исходный КОД:\n"+buf+"\n\n"+"Найдено лексем:"+QString::number(lecs. count())+"\n"+lecsems+"\n\n"+out+"\n\n"+QDateTime::currentDateTime().toString("dd. MM. yyyy, h:m:s");

               filename=curDir+"/"+"Result. txt";

               file. setFileName(filename);

               if( file. open(QIODevice::WriteOnly))

               {

                       QStringList list=result. split("\n");

                       QTextStream in(&file);

                       for (int k=0;k<list. size();k++)

                       {

                               list[k]+="\n";

                               in << list[k];

                               in << QString();

                       }

               }

               else { ui. statusBar->showMessage(QString("Ошибка обработки файла Result. txt")); return;}

               file. close();

               ui. statusBar->showMessage(QString("Анализ удачно завершён. Выходные файлы в папке: ")+curDir);

}

void lab1_oc::loadCode()

{

       Filename = QFileDialog::getOpenFileName(this, "Выбор файла с программой", "", "файл программы (*.pas)");

       ui. SCod->clear();

       QString str;

       QFile file( Filename );  //Создаем объект файла

       if( file. open(QIODevice::ReadOnly))  //Если файл открыт только для чтения

       {        

               QTextStream in(&file);  //открываем поток ввода

               str+=in. readAll();

               ui. SCod->setText(str);

               ui. statusBar->showMessage("Загружен код из файла: "+Filename);

       }

       else ui. statusBar->showMessage("Файл не загружен");

}

void lab1_oc::loadBase()

{

       all_service_words. clear();

       all_znaks. clear();

       QString str;

       QFile file;

       QString filename=QDir::currentPath()+"/"+"service_words. txt";

       file. setFileName(filename); 

       if( file. open(QIODevice::ReadOnly))  //Если файл открыт только для чтения

       {        

               QTextStream in(&file);  //открываем поток ввода

               while(!in. atEnd())                 //пока не достигли конца потока

               {

                       in >> str;

                       all_service_words << str;

               }

       }

       file. close();

       filename=QDir::currentPath()+"/"+"symbols. txt";

       file. setFileName(filename);

       if( file. open(QIODevice::ReadOnly))  //Если файл открыт только для чтения

       {        

               QTextStream in(&file);  //открываем поток ввода

               while(!in. atEnd())                 //пока не достигли конца потока

               {

                       in >> str;

                       all_znaks << str;

               }

       }

       file. close();

}

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4