Поиск:

Ответ в темуСоздание новой темы Создание опроса
> переменная счетчик в циклах i - неадекват, рандомные занчения! 
:(
    Опции темы
Notreg
Дата 11.8.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Пошагово отлаживаю и тут раз и i  присваивается нереально большое занчение(i = 9604034)! притом в предыдущем операторе так же используется i и нормально а тут раз и все! И сообственно с i то никаких манипуляций не происходит нет операторов присваивания, кроме тех которые выполняет оператор цикла собственно. Че может быть, а главное как выявить от куда прирост такой берется?
--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
THandle
Дата 11.8.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

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



Notreg, интересно было бы глянуть на код...
PM   Вверх
Notreg
Дата 11.8.2008, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



вот например в обработчике отжатия мыши! всегда в одном и том же месте: MyCards[i] = -1; 

Код

//---------------------------------------------------------------------------
void __fastcall TMainForm::FormMouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
        //мышка на карте?
        for (i = 0; i < 6; i += 1)
        {
                if (MouseOnCard[i] == true && MyCards[i] != -1)
                {
                        //фиксируем уход карты
                        GoCards[i] = true;
                        CardsForGlasses[n] = MyCards[i];
                        //ставим карту в центр
                        MoveCards[n] = ArrayCards[MyCards[i]];
                        if (FirstCard == -1)
                        {
                                FirstCard = MyCards[i];
                        }
                        if (Suit[FirstCard] == Suit[CardsForGlasses[n]] || Suit[CardsForGlasses[n]] == 0)
                        {
                                if (Weight[PreviousCard] > Weight[CardsForGlasses[n]])
                                {
                                        BribeWinner = 0;
                                        PreviousCard = CardsForGlasses[n];
                                }
                        }
                        MyCards[i] = -1;//вот! здесь! i - принимает большое значение
                        //следующий
                        n += 1;
                        //запрещаем текущего
                        PlayerGo[Player] = false;
                        //следующий
                        Player += 1;
                        if (Player > 3)
                        {
                                //переход в начало
                                Player -= 4;
                        }
                        //разрешаем следующего
                        PlayerGo[Player] = true;
                        //запуск следующего
                        PlayNext();
                }
        }

        //PaintGame();
}
//---------------------------------------------------------------------------

--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
fridkaratel
Дата 11.8.2008, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



Судя по твоему коду, у тебя переменная i глобально объявлена... ;)
PM   Вверх
mrbrooks
Дата 12.8.2008, 07:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(fridkaratel @ 11.8.2008,  22:11)
Судя по твоему коду, у тебя переменная i глобально объявлена... ;)

с чего ты взял - она описана и инициализована в цикле. 

умиляют эти строчки кода  smile 
Код

n += 1;
...
Player += 1;

PM MAIL   Вверх
fridkaratel
Дата 12.8.2008, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



Цитата(mrbrooks @ 12.8.2008,  15:40)
с чего ты взял - она описана и инициализована в цикле.


Цитата(Notreg @ 12.8.2008,  01:48)
for (i = 0; i < 6; i += 1)


Не-а... в цикле она не инизиализируется... Верней, ей задаются начальные и конечные параметры... Но i может быть изменена в любом месте, так как i - не локальна для цикла, а глобальна, как я понял из кода, для всего проекта...

Это сообщение отредактировал(а) fridkaratel - 12.8.2008, 08:28
PM   Вверх
volvo877
Дата 12.8.2008, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Цитата(mrbrooks @  12.8.2008,  07:40 Найти цитируемый пост)
она описана и инициализована в цикле. 
Можешь назвать номер строки, в которой она описана в цикле? Или эта строка почему-то не вошла в исходник?
PM MAIL   Вверх
fridkaratel
Дата 12.8.2008, 08:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



[DELETE]

Это сообщение отредактировал(а) fridkaratel - 12.8.2008, 08:27
PM   Вверх
mrbrooks
Дата 12.8.2008, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(volvo877 @ 12.8.2008,  08:26)
Цитата(mrbrooks @  12.8.2008,  07:40 Найти цитируемый пост)
она описана и инициализована в цикле. 
Можешь назвать номер строки, в которой она описана в цикле? Или эта строка почему-то не вошла в исходник?

факмоймозг. мой косяк. smile 
PM MAIL   Вверх
Notreg
Дата 12.8.2008, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(mrbrooks @  12.8.2008,  07:40 Найти цитируемый пост)
умиляют эти строчки кода


что там такого? пояснишь?



Цитата
Судя по твоему коду, у тебя переменная i глобально объявлена... ;)



типа это косяк? почему же он проявляется тока в одно и том же месте? короче зачем объявлять локально?


--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
mrbrooks
Дата 12.8.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



использовать глобальные переменные - плохой стиль. надо стараться их избегать. например сиглинтоном. тебе достаточно будет локальной переменной. к примеру 
Код

static int i;
 

по поводу умиления:

Код

n ++;
...
Player ++;

PM MAIL   Вверх
fridkaratel
Дата 12.8.2008, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



Вообще, в твоем случае лучше:
Код

for (int i = 0; i < 6; i++)
{
  <...>
}

PM   Вверх
Notreg
Дата 12.8.2008, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

по поводу умиления:


да ладно, если шаг = 2, два раза чтоль писать или 4 плюса, а если 10, и шаг вообще может быть переменной,чтоб оперативно изменять шаг пишу так..

Цитата

например сиглинтоном


а это че?




--------------------
Надежна лишь смерть, жизнь - нет.
PM MAIL   Вверх
fridkaratel
Дата 12.8.2008, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 221
Регистрация: 22.10.2007
Где: Error connect to MySQL Da...

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



а что за массивы используешь? Например,  MyCards[i] - это AnsiString, int, char?

И какая у них длина?

Это сообщение отредактировал(а) fridkaratel - 12.8.2008, 12:10
PM   Вверх
mrbrooks
Дата 12.8.2008, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 167
Всего: 306



Цитата(Notreg @ 12.8.2008,  12:04)
Цитата

по поводу умиления:


да ладно, если шаг = 2, два раза чтоль писать или 4 плюса, а если 10, и шаг вообще может быть переменной,чтоб оперативно изменять шаг пишу так..

Цитата

например сиглинтоном


а это че?

1. Это если, а у тебя не если
2. В гугл
3. Присоединяюсь к fridkaratel - выложи полный код со своими глобальными переменными. Не боись. Врятли кто нарушит твои авторские права. smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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