Привет всем,проблема такая после относительно долгих вычислений стараюсь инициализировать графический режим,но он выдает ошибку - Not enough memory to load driver (не хватает памяти для загрузки драйвера),хотя если закоментить эти вычисления все проходит нормально и gdriver возращает 9(вместо - 5).
В чем проблема подскажите плиз smile smile smile
Уже задолбался,ток эта проблема,ниже приведен код(то что закоментированно и есть долгие вычисления):
Код:
//**********************************************************************\\
//************************* ОСНОВНАЯ ПРОГРАММА *************************\\
//**********************************************************************\\
void main(void){ // начало основной программы
clrscr();
//------- Инициализация глобальных переменных и структур ----------------
init_const();
char *s = new char [100];
double gmin,gmax,gstep,Time_Field,Time_Step;
matrix cof,kd1,dd1,rd1,p,qq,r; //Матрица коэффициентов
int i,j;
double k,tau;
matrix kd,dd,rd;//╠рЄЁшЎ√ юс•хъЄр ш тэх°эхую тючьє∙хэш
matrix T;//- ьрЄЁшЎр тїюфэ√ї ╥,╥1,╥2 ш Є.ф. ъръющ яюЁ фюъ юс•хъЄр.╥.ъ. хёыш яюЁ фюъ сюы№°х 1 ¤Єю сєфхЄ тхъЄюЁ шч 2-ї ¤ыхьхэЄют
//******************* Загрузка параметров из файла *********************\\
fi=fopen("config.txt","r");
if (!fi) {get_par_error(str_e1);}
//считываем переменные настроек объекта
h=get_par();
m=get_par();
int minco=(int)get_par(); //╠шэшьры№э√щ шэфхъё ъю¤ЇЇшЎшэхЄют
maxco=(int)get_par();
cof.n=(int)get_par();
int nn = cof.n;
cof.m =(int)get_par();
por_object = (int)get_par();//╧юЁ фюъ эр°хую юс•хъЄр
int ii = -1;
fgets(s,100,fi);
do{
fgets(s,100,fi);
char *p = s;
int jj=0;
ii++;
do{
cof.data[ii][jj++]=atof(p);
}while ((p = strchr(p,' ')) || (p = strchr(p,'//')) , p++);
}while (ii!=nn-1);
time_change=(int)get_par();
//переменные настройки графика
gmin=get_par();
gmax=get_par();
gstep=get_par();
Time_Field=get_par();
Time_Step=get_par();
CreatePlotFile=get_par();
//переменные имитации входного воздействия и внешнего возм
u_sim=get_par();
uf_sim=get_par();
ufw=get_par();
ufA=get_par();
randuf=get_par();
fclose(fi);
//------------------------------------------------------------------------
//Если разрешено создавать файл данных графика, то открываем его
if (CreatePlotFile)
{
Plot=fopen("plot.dat","w");
if (!Plot){
fclose(Plot);
fprintf(Pr,"Файл графика не создан!\n");
}
}
//---------------------------------------------------------------------
iii = minco - 1;
while (iii < maxco) {//─юфхырЄ№ чряюыэхэшх ьрЄЁшЎрьш ъю¤ЇЇшЎшхэЄют
k=cof.data[0][iii];
T.n = 1; T.m = por_object + 1;
T.data[0][0] = 0;//╬сэєы хь яхЁт√щ ¤ыхьхэЄ
for (j = 0;j < por_object;j++) {
T.data[0][j + 1] = 1/cof.data[j + 1][iii];
}
tau=cof.data[cof.n - 1][iii];
//====================================================================
//╘юЁьшЁєхь тхъЄюЁр эхяЁхЁ√тэющ ёшёЄхь√ т ЇюЁьх тїюф-т√їюф фы юс•хъЄр 2-ую яюЁ фър
//====================================================================
//p - d - тхъЄюЁ яЁш т√їюфэ√ї яхЁхьхээ√ї фшЇЇхЁ-эюую єЁртэхэш
PbyRoots(&T,&p);
//qq - k -тхъЄюЁ яЁш тїюфэ√ї яхЁхьхээ√ї фшЇЇхЁ-эюую єЁртэхэш
qq.n = 1; qq.m = 1;
qq.data[0][0] = k;
//r - тхъЄюЁ яЁш тэх°эхь тючьє∙хэшш фшЇЇхЁ-эюую єЁртэхэш
r.n=r.m = 1;
r.data[0][0] = m;
p = fliplr(p);
//╧хЁхтюфшь юс•хъЄ шч эхяЁхЁ√тэющ т фшёъЁхЄэє■ ёшёЄхьє
ToDisk(&p,&qq,&r,h,&dd1,&kd1,&rd1);//Perevod iz
for (j = 0;j < dd1.m;j++) {
dd.data[iii][j] = dd1.data[0][j];
kd.data[iii][j] = kd1.data[0][j];
rd.data[iii][j] = rd1.data[0][j];
}
iii++;
}
G_Init(); // Инициализация графического режима
Ну и сам код инициализации:
Код:
void G_Init(){
int gdriver = Detect, gmode, errorcode;
gmode=0;
//gdriver=0;
initgraph(&gdriver, &gmode, "");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
}
Хочу напомнить что вычисления перед инициализацией граф.режима очень большие и если вставить G_Init(); перед while (iii < maxco) { - то хотя бы появится черный экран хотя от этого не легче((
Кто знает в чем проблема отпишитесь плиз очень буду презнателен)))
Програмлю на BorlandC++ 3.1 for DOS