Что делать с такой ошибкой в программе парсере?

vetalka2010

Ребят сделал программу translator с паскаля на с++ описал try...catch для кнопки выполнить вот код:
try{
                Parser parser;
                std::string myString = "";
                for(int i = 0; i < rtbPascal->Text->Length; i++)
                    myString += (char)rtbPascal->Text[i];
                rtbCpp->Text=gcnew System::String(parser.run(myString).c_str());
             }
             catch(Exception^ exc)
             {
                        MessageBox::Show("Допущена ошибка в синтаксисе кода, исправте её и повторите!\n", "Ошибка!",
                        MessageBoxButtons::OK,
                        MessageBoxIcon::Error);
             }
Но, когда я не вписываю допустим код паскаля, либо пишу его с ошибками прога крашится либо выдает такое (скрин ниже). Что посоветуете?
5 ответов

vetalka2010

vetalka2010, данный catch ловит .NET исключения. У тебя же срабатывает assert из runtime библиотеки в типе vector из-за ошибки с его использованием.


vetalka2010

Как можно реализовать так что бы не крашилась программа а выдавало окно с ошибкой?


vetalka2010

vetalka2010, в данном случае нужно исправить ошибку в коде, а не искать способ красиво сообщить о ней


vetalka2010

Хмм, в чем может быть выражена ошибка (в каком месте). Кину ниже код, мб посмотрите на досуге если не сложно!


vetalka2010

Посмотрите?