Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> popup под дос...не работает... 
:(
    Опции темы
PuLN
Дата 24.4.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 1.8.2006

Репутация: 1
Всего: 2



всем привет!
помогите с кодом...
Код

#include "stdafx.h"
#include<stdio.h>
#include<dos.h>
#include<stdlib.h>
#include<string.h>

#define BORDER  1
#define ESC 27
#define REV_VID 0x70
#define NORM_VID 7

void save_video(),restore_vodeo();
void gotoxy(),cls(),write_video();
void display_menu(),draw_border();

char *fruit[]={
"Apple",
"Orange",
"Pear",
"grapefruit",
"raspberry",
"strawberry"
};
char *color[]={
"red",
"yellow",
"Orange",
"green"
};

char *apple_type[]={
"red delicates",
"Dgonatan",
"Beliy Naliv",
"Antonovka"
};


int count;
int x,y;
int border;
char *menu();
char *keys();
int popup(menu,keys,count,x,y,border)
    {
    register int i,len;
    int endx,endy,choice;
    unsigned char *p;
        if((x>24)||(x<0)||(y<79)|| (y<0)){
            printf("vixod za predeli ekrana!");
            return -2;
        }


    len=0;
    for(i=0;i<count;i++)
        if(strlen(menu[i]) > len)
        len=strlen(menu[i]);
        endy=len+2+y;
        endx=count+1+x;
        if((endx+1>24)||(endy+1>79)){
        printf("vixod za predeli ekrana!");
        return -2;
        }
    p=(unsigned int*)malloc((endx-x+1)*(endy-y+1));
    if(!p)
    exit(1);

    void save_video(x,endx+1,y,endy+1,p);
    if(border) draw_border(x,y,endx,endy);
    
    void display_menu(menu,x,y,count);

    choice=get_resp(x,y,count,menu,keys);

    void restore_video(endx+1,y,endy+1,p);
    free(p);
    return choice;
    }

void main()
{
int i;
cls();
gotoxy(0,0);
    for(i=0;i<25;i++)
    printf("This is a text of popup menu");
    popup(fruit,"fruit",6,1,3,BORDER);
    popup(color,"color",4,5,10,BORDER);
    popup(apple_type,"type",4,10,18,BORDER);
}


  void display_menu(menu,x,y,count)
       char *menu[];
       int x,y,count;
       {
            register int i;
            for(i=0;i<count;i++,x++){
            gotoxy(x,y);
            printf(menu[i]);
     }
    }
    int startx,starty,endx,endy;
    void draw_border(startx,starty,endx,endy)

    {
        register int i;
        for(i=startx+1;i<endx;i++)
        {
            gotoxy(i,starty);
            putchar(179) ;
            gotoxy(i,endy);
            putchar(179);

        }
     for (i=starty+1;i<endy;i++)
     {
        gotoxy(startx,i);
        putchar(196);
        gotoxy(endx,i);
        putchar(196);

     }
     gotoxy(startx,starty);
     putchar(218) ;
     gotoxy(startx,endy);
     putchar(191);
     gotoxy(endx,starty);
     putchar(192);
     gotoxy(endx,endy);
     putchar(217);

    }
       get_resp(x,y,count,menu,keys);
       //int x,y,count;
      // char *menu[];
       //char *keys;
       {
        union inkey{
        char ch[2];
        int i;
    }c;
       }
       int arrow_chioce=0,key_choice;
       y++;

       gotoxy(x,y);

       write_video(x,y,menu[0],REV_VID);
       for(;;){
    while(!bioskey(1));
    c.i=bioskey(0);

    gotoxy(arrow_choice,y);
    write_video(x+arrow,choice,menu[arrow_choice],norm_vid);
    if(c.ch[0]) {
    key_choice=is_in(keys,tolower(c.ch[0]));
    if(key_choice) return key_choice-1;
    switch(c.ch[0]){
        case '\r': return arrow_choice;
        case ' ' : arrow_choice++;
        break;
        case ESC : return -1;
        };

    }
    else {
    switch(c.ch[1]){
        case 72 : arrow_choice--;
        break;
        case 80; arrow_choise++;
        break;
      };
    }

    if(arrow_choice==count) arrow_choice=0;
    if(arrow_choice<0) arrow_choice=count-1;

    gotoxy(x+arrow_choice,y);
    write_video(x+arrow_choice,y,menu[arrow_choice],REV_VID);
    }
    }

int x,y;
char *p;
int attrib;
void write_video(x,y,p,attrib)

{
    union REGS r;
    register int i,j;

    for(i=y; *p;i++){
    gotoxy(x,i);
      r.h.ah=9;
      r.h.bh=0;
      r.x.cx=1;
      r.h.al=*p++;
      r.h.bl=attrib;
      int86(0x10,&r,&r);

    }
}

void save_video(startx,endx,starty,endy,buf_ptr)
int startx,endx,starty,endy  ;
unsigned int *buf_ptr;
{
    union REGS r;
    register int i,j;
    for(i=starty;i<endy;i++)
        for(j=startxli<endx,j++){
        gotoxy(j,i);
        r.h.ah=8;
        r.h.bh=0;
        *buf_ptr++=int86(0x10,&r,&r);
        putchar(' ');
        }

}

void restore_video(startx,endx,starty,endy,buf_ptr)
int startx,endx,starty,endy;
unsigned int *buf_ptr;
{
    union REGS r;
    register int i,j;
    for(i=starty;i<endy;i++)
        for(j=startx;j<endx;j++){
          gotoxy(j,i);
          r.h.ah=9;
          r.h.bh=0;

          r.x.cx=1;
          r.h.al=*buf_ptr++;
          r.h.bl=*buf_ptr++;
          int86(0x10,&r,&r);
          }

    }

    void cls()
    {

    union REGS r;
    r.h.ah=6;
    r.h.al=0;
    r.h.ch=0;
    r.h.cl=0;
    r.h.dh=24;
    r.h.dl=76;
    r.h.bh=7;
    int86(0x10,&r,&r);

    }

--------------------
*** хуже нет,когда не ответит тот,кто знает....*** наша жизнь-желтая стрела,подхваченная ветром времени(© PuLN)   
PM MAIL   Вверх
JackYF
Дата 25.4.2007, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



256 строк кода... Мдя...

Ты скажи, где конкретно у тебя код не работает. Никто, кроме мазохистов, это лопатить не будет.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
dizzy1984
Дата 25.4.2007, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 15.2.2007

Репутация: 3
Всего: 25



Вообщем согласен с предыдущим оратором.
Что значит
Цитата(PuLN @  24.4.2007,  22:39 Найти цитируемый пост)
помогите с кодом...

Хороший код, красивый.

Я помог тебе?

Это сообщение отредактировал(а) dizzy1984 - 25.4.2007, 13:42
PM MAIL   Вверх
dumb
Дата 25.4.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 8
Всего: 158



Цитата(PuLN @  24.4.2007,  22:39 Найти цитируемый пост)
помогите с кодом...

помогать не с чем. это - не код.
сие "нечто" написано, боюсь, еще до твоего рождения, посему синтаксис очень стар. разметка - хаос. и куча как синтаксических ошибок, так и опечаток, итд.

в сети можно найти куда более свежие и правильные "заготовки".
PM MAIL   Вверх
PuLN
Дата 25.4.2007, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 1.8.2006

Репутация: 1
Всего: 2



да уж..я что то не подумал совсем...
код написан не до моего рождения,но он и правда старый.
по книжке написан, "Программирование на Си для профессионалов" ИВКсофт
год не помню..просто интересно стало повозится с Си именно.

ладно..я вобщем, думаю любителям чистого Си посвящается))

я компилил в BC 3.1 и в студии..ошибок 48..
видимо особенности,которых я не знаю, сказываются.
за советы буду благодарен;)
--------------------
*** хуже нет,когда не ответит тот,кто знает....*** наша жизнь-желтая стрела,подхваченная ветром времени(© PuLN)   
PM MAIL   Вверх
vinter
Дата 25.4.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



какие особенности? смотрим в код и что видим сразу же? бред
Код

void save_video(),restore_vodeo();
void gotoxy(),cls(),write_video();
void display_menu(),draw_border();

и это даже без детального просмотра, а код слишком убогий чтобы в нем разбираться..


--------------------
Мой блог
PM MAIL WWW   Вверх
PuLN
Дата 26.4.2007, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 211
Регистрация: 1.8.2006

Репутация: 1
Всего: 2



и какие особенности бреда?
что ж не так то?какие аргументы?
--------------------
*** хуже нет,когда не ответит тот,кто знает....*** наша жизнь-желтая стрела,подхваченная ветром времени(© PuLN)   
PM MAIL   Вверх
vinter
Дата 26.4.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



че за запятые?
так нельзя, обьявление ф-ии должно заверщаться точкой с запятой!


--------------------
Мой блог
PM MAIL WWW   Вверх
Daevaorn
Дата 26.4.2007, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(vinter @  26.4.2007,  17:31 Найти цитируемый пост)
так нельзя, обьявление ф-ии должно заверщаться точкой с запятой!

я бы на твоём месте не был бы столь категоричнымsmile
PM MAIL WWW   Вверх
vinter
Дата 26.4.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Цитата(Daevaorn @  26.4.2007,  16:38 Найти цитируемый пост)
я бы на твоём месте не был бы столь категоричным

поясни


--------------------
Мой блог
PM MAIL WWW   Вверх
Daevaorn
Дата 26.4.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(vinter @  26.4.2007,  20:38 Найти цитируемый пост)
поясни

поясняюsmile Вот это заявление
Цитата(vinter @  26.4.2007,  17:31 Найти цитируемый пост)
так нельзя, обьявление ф-ии должно заверщаться точкой с запятой!

не верно. Чем спрашивается функции хуже переменных? Вот такой же код тебя не смущает:
Код

int a, b;

И с функциями тоже самое.
PM MAIL WWW   Вверх
vinter
Дата 26.4.2007, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



прикольно, не знал такогоsmile


--------------------
Мой блог
PM MAIL WWW   Вверх
Daevaorn
Дата 26.4.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(vinter @  26.4.2007,  22:27 Найти цитируемый пост)
прикольно, не знал такого

вот поэтому и нужно быть сдержанным в высказываниях
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1219 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.