Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.04.2009, 22:33   #1
Anatol_rus
Пользователь
 
Регистрация: 30.09.2008
Сообщений: 33
Восклицание Проблема инициализайии графического режима в BorlandC++ под ДОС

Привет всем,проблема такая после относительно долгих вычислений стараюсь инициализировать графический режим,но он выдает ошибку - 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

Последний раз редактировалось Anatol_rus; 01.04.2009 в 22:35.
Anatol_rus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Си под Дос. Массивы Zid@ne Общие вопросы C/C++ 6 23.12.2008 16:55
Массивы структур.СИ под ДОС. Zid@ne Общие вопросы C/C++ 2 12.12.2008 18:16
создание графического редактора в Delphi? parano_ya Помощь студентам 1 29.04.2007 08:17