Здравствуйте! Как я избавился от переполнения стека:
ushort usTable[50][50];//Массив сетки кроссворда
Если делал больше 50-ти, то отваливался импорт файла и запуск руководства пользователя :lol:
Изменил на:
ushort **usTable;//Массив сетки кроссворда
...
//Создание двумерного динамического массива
usTable = new ushort*[TableKlestCrossword->rowCount()];
for(int i = 0; i < TableKlestCrossword->rowCount(); i++)
usTable[i] = new ushort[TableKlestCrossword->columnCount()];
Далее введены константы:
//Определение путей констант, в соответствии с системой
#if defined(Q_WS_WIN)
#define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc"
#define PATH_SHARE_DOC QApplication::applicationDirPath()
#define PATH_SHARE_APP QApplication::applicationDirPath()
#define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html"
#elif defined(Q_WS_X11)
#define PATH_TMP_SET "/tmp/klest-crossword-0.3.7/settings.xwsc"
#define PATH_SHARE_DOC "/usr/share/doc/klest-crossword-0.3.7"
#define PATH_SHARE_APP "/usr/share/klest-crossword-0.3.7"
#define PATH_TMP_STAT "/tmp/klest-crossword-0.3.7/cstat.html"
#elif defined(Q_WS_MAC)
#define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc"
#define PATH_SHARE_DOC QApplication::applicationDirPath()
#define PATH_SHARE_APP QApplication::applicationDirPath()
#define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html"
#endif
//Пути для разработки и отладки программы
/*#define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwsc"
#define PATH_SHARE_DOC QApplication::applicationDirPath()
#define PATH_SHARE_APP QApplication::applicationDirPath()
#define PATH_TMP_STAT QApplication::applicationDirPath() + "/cstat.html"*/
#define MODE_VIEW true
#define MODE_EDIT false
#define ACROSS_ENABLE true
#define ACROSS_DISABLE false
#define LANGUAGE_RUSSIAN true
#define LANGUAGE_ENGLISH false
#define TOOLBAR_SHOW true
#define TOOLBAR_HIDE false
#define EXPORT_YES true
#define EXPORT_NO false
#define TYPE_PDF 0
#define TYPE_POST_SCRIPT 1
Что позволило пути в программе менять всего один раз
Так же появилась возможность убрать лишние условия и оформить в switch:
switch(iTypeExport)
{
case TYPE_PDF:
sFilter = ".pdf";
break;
case TYPE_POST_SCRIPT:
sFilter = ".ps";
break;
case TYPE_HTML:
sFilter = ".html";
break;
case TYPE_TXT:
sFilter = ".txt";
break;
case TYPE_JPG:
sFilter = ".jpg";
break;
case TYPE_JPEG:
sFilter = ".jpeg";
break;
case TYPE_BMP:
sFilter = ".bmp";
break;
case TYPE_TIFF:
sFilter = ".tiff";
break;
case TYPE_PNG:
sFilter = ".png";
break;
case TYPE_XPM:
sFilter = ".xpm";
break;
case TYPE_XBM:
sFilter = ".xbm";
break;
case TYPE_PPM:
sFilter = ".ppm";
break;
case TYPE_OPEN_KLEST:
sFilter = ".ok";
break;
}
Введение структуры файла свойств:
//Структура файла свойств программы
struct TFileOptions
{
bool bModeWork,//Режим работы программы
bLanguageProgram,//Язык программы
bStateStandardToolbar,//Состояние показа стандартной панели
bStateExport,//Состояние экспортирования
bCurrentDictionary;//Текущий словарь
QString sModePassword,//Пароль режима
sPathCrossword,//Путь для кроссвордов
sPathExport,//Путь для экспорта
sPathTemplate;//Путь для шаблонов
int iNumberTimes,//Количество раз
iTypeExport;//Тип экспорта
};
Скачать 0.3.7. На данный момент это последняя версия, прошу...