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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Undefined label, Странное сообщение Турбо Си 
:(
    Опции темы
LG
  Дата 2.11.2005, 14:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я не понимаю ничего. Пишу программу в Турбо Си. А он выдает ошибку типа: Undefined Label "имя метки". Так вот вместо имени метки пишется какой-то непонятный знак, его с помощью клавиатуры не напечатаешь. Помогите, плиз, не понимаю откуда эта метка берется.



вот мой код:
Код

#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>
#define m1
#define m2

int main(int argc,char* argv[])
{
int grDriver;
int grMode;
int ErrCode;
unsigned short MouseX,MouseY;
unsigned short Left;
int Temp1,Temp2;
char X,Y;

grDriver=DETECT;
initgraph(&grDriver,&grMode,"");
ErrCode=graphresult();
if(ErrCode==grOk)
{
asm {
mov ax,00h
int 33h
mov ax,01h
int 33h
}
while (Left==0)
{
Left=1;
asm {
mov ax,03h
int 33h
shr bx,1
jnc m1
mov MouseX,cx
mov MouseY,dx
jmp m2
m1:mov Left,0
m2:
}
Temp1=MouseX;
Temp2=MouseY;
X=Temp1;
Y=Temp2;
if (Left==1) printf(X+":"+Y);
}
closegraph();

}
else printf("GraphicsError");

return 0;
}









  Вверх
Дрон
Дата 2.11.2005, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



А зачем нужны эти строки:
Код

#define m1
#define m2


smile

Это сообщение отредактировал(а) Дрон - 2.11.2005, 14:18


--------------------
Да. Именно так.
PM   Вверх
LG
Дата 2.11.2005, 14:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Так без них выводится ошибка, что не найдены метки m1, m2
  Вверх
Дрон
Дата 2.11.2005, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



А с ними вообще бред получается smile smile

Попробуй вынести метки из блока asm {}

Т.е. так:
Код

...

asm {
mov ax,03h
int 33h
shr bx,1
jnc m1
mov MouseX,cx
mov MouseY,dx
jmp m2
}
m1:
asm mov Left,0
m2:

...



--------------------
Да. Именно так.
PM   Вверх
LG
Дата 2.11.2005, 15:12 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сейчас при компиляции пишет, что ошибок нет, но при этом еще пишет "ctrl break to quit".

После этого я могу только свернуть программу, в ней ничего не нажимается.
Это что еще за фишка такая?
  Вверх
Дрон
Дата 2.11.2005, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: 10
Всего: 93



Тут телепатов нет smile

Возвожно проблема с инициализацией графики. Я уже сто лет с такими штуками не работал.
Попробуй в пошаговом режиме (если такой в Турбо Си есть) пройтись и посмотреть, где происходит ошибка.





--------------------
Да. Именно так.
PM   Вверх
LG
Дата 2.11.2005, 16:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











А может поможет кто-нибудь мне разобраться где ошибка, до меня ну никак не дойдет.
Цель проги - отображение координат мыши в месте нажатия левой кнопкой. Вот код, до которого я дошла:

Код

#include<stdio.h>
#include<graphics.h>
#include<stdlib.h>


int main(int argc,char* argv[])
{
int grDriver;
int grMode;
int ErrCode;
unsigned short MouseX,MouseY;
unsigned short Left;
int Temp1,Temp2;
char X,Y;

grDriver=DETECT;
initgraph(&grDriver,&grMode,"");
ErrCode=graphresult();
if(ErrCode==grOk)
{
asm {
mov ax,00h
int 33h
mov ax,01h
int 33h
}
do
{
Left=1;
asm {
mov ax,03h
int 33h
shr bx,1
jnc m1
mov MouseX,cx
mov MouseY,dx
jmp m2
}

m1:
asm mov Left,0
m2:
Temp1=MouseX;
Temp2=MouseY;
X=Temp1;
Y=Temp2;
if (Left==1) outtextxy(MouseX,MouseY,X+":"+Y);
} while (!kdhit());
closegraph();

}
else printf("GraphicsError");

return 0;
}


Ну помогите, ну пожалуйста.

  Вверх
Neitron
Дата 2.11.2005, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

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



Девушка, а это обязательно делать под досом?


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
BreakPointMAN
Дата 2.11.2005, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 14
Всего: 24



Бррр... smile
Что-то непонятное и страшное вы делаете, девушка, в строке 14:
Код

char X,Y;

и в строке 47:
Код

if (Left==1) outtextxy(MouseX,MouseY,X+":"+Y);

Зачем переменные X и Y нам объявлять как тип char? - раз
И кто вас так учил в строку данные объединять? - два

Я бы сделал как-то так...
В начале программы:
Код

int X,Y;
char s[128];

там, где выводятся координаты:
Код

sprintf(s,"%d:%d",X,Y);
if (Left==1) outtextxy(MouseX,MouseY,s);


И инициализацию графического режима надо еще посмотреть повнимательнее...
Во-первых, BGI-драйвер должен лежать либо в той же папке, где программа откомпилированная находится, либо нужно указать полный (или относительный) путь к нему в последнем параметре функции initgraph, например, так:
Код

initgraph(&grDriver,&grMode,"c:\\tc_3\\bgi");

да и режим бы я задал явно, например:
Код

grDriver=VGA, grMode=VGAHI;



--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
LG
Дата 3.11.2005, 08:51 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не работает все равно.
Пойду чего-нибудь про OpenGL почитаю.
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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