Войти

Показать полную графическую версию : [решено] Не могу отомпилировать..


M1sha
08-05-2008, 21:38
Доюрый день.
Добрый день.
В общем, так.. Пишу программу, в которой фигурирует меню в виде псевдографики на основе динамического двунаправленного кольцевого списка (внешне похоже на меню GTA:Vice City). Написал это меню. Все хорошо. Начал писать его обработку и тут возникла проблема..

#define a2 "Exit";
….
do
{
OutMenu (HeadMenu,/*TailMenu,*/Activ,color);
i=getch();

//vniz
if (i==80)
Activ=Activ->next;
//vverh
if (i==72)
Activ=Activ->pred;
//najali Enter
if (i==13)
if (Activ->info==a2)
i=27;
}
while (i!=27);


Проблема: не хочет компилировать эту строку: if (Activ->info==a2) что тут не так? Писала аналогичное на Pascal'е, все получалось, а тут..

BlackEric
09-05-2008, 00:19
Компилятор , код ошибки, как объявлен Activ, версия ОС?

Admiral
09-05-2008, 05:11
А может if ((Activ->info)==a2) ?

M1sha
09-05-2008, 11:40
Компилятор , код ошибки, как объявлен Activ, версия ОС? »
Borland c++(если этого не хватает, то скажите где смотреть).
121: If statement missing
121: Expression syntax
XP SP2 версия 5,1 сборка 2600А может if ((Activ->info)==a2) ? »
неа :(

Admiral
09-05-2008, 17:22
Тогда стоит поробовать так
if (i==13)
{
if (Activ->info==a2)
i=27;
}
Хотя там по одному вложениюв if должно и так счёлкать.

M1sha
09-05-2008, 17:29
Admiral, 'это ничего не меняет..вложен только один оператор.

Admiral
09-05-2008, 17:44
Да я так в оффе тоже написал. Но может компилятор запутался :wink:
А всё же как объявлен Activ?

M1sha
09-05-2008, 18:20
Эх, забыл сразу отправить :) Вот:

#define TNode struct TNode
TNode
{
char info[10];
TNode *next;
TNode *pred;
};

...

TNode *Activ=HeadMenu;

ivank
12-05-2008, 15:30
M1sha, массивы нельзя сравнивать с помощью оператора ==. Для сравнения строк есть функция strcmp.

M1sha
12-05-2008, 19:26
ivank, спасибо, теперь все работает)




© OSzone.net 2001-2012