Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа работает, но не совсем, ошибки возникают при выходе 
:(
    Опции темы
Гость_Константин
Дата 31.10.2005, 21:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Доброго времен суток!
На данном этапе развития программки она должна рисовать правельный n-угольник.
Она его успешно рисует, но после нажатия кнопки выход появляется вот такая ошибка:

Project Project1.exe raised exception class EAccessViolation
with message'Access violation at address 32609C45. Write of address
FFFFFFA4' Process stopped. Use Step or Run to continue.

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

Так что если кто поможет буду очень благодарен.

Вот её код:


//---------------------------------------------------------------------------
#include <math.h>
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int round(double x)
{
if ((ceil(x)-x)<0.5)
return ceil(x);
else
return floor(x);
}


int get_y (int n, int r,double phi)
{return 100-round(r*sin(M_PI/2+phi));
}

int get_x (int n, int r, double phi)
{ return 100+round(r*cos(M_PI/2+phi)) ;
}

TPoint* getpoints(int n, int r)
{
double phi = 0;
TPoint *array = new TPoint[n];
for(int i = 0; i < n+1; i++)
{
array[i] = Point(get_x(n, r, phi),get_y(n,r, phi));
phi+=2*M_PI/n;
}
return array;

}


void __fastcall TForm1::FormActivate(TObject *Sender)
{
Image1->Canvas;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if ((Edit1->Text!="")&&(Edit2->Text!=""))
{int n=StrToInt(Edit1->Text);
int r=StrToInt(Edit2->Text);
if ((n>2)&&(r>20))
Image1->Canvas->Polygon(getpoints(n,r),n);
else ShowMessage("Не верно указанно или количество граней, или длина, или одно из полей пустое");
}

else ShowMessage("Не верно указанно или количество граней, или длина, или одно из полей пустое");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{ Action=caFree;

}
//---------------------------------------------------------------------------




  Вверх
Константин (автор вопроса)
Дата 31.10.2005, 22:35 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Step over заканчивается на
__fastcall AnsiString(): Data(0) {}
Что это и откуда я понятия не имею
Может стоит Editы обнулить, других строк у меня впринципе нет?
  Вверх
S.A.P.
Дата 31.10.2005, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

TPoint *array = new TPoint[n];
for(int i = 0; i < n+1; i++)

попробуй убрать +1. Тут по идее у тебя идет выход за пределы массива.
PM MAIL   Вверх
Константин(всё тот же)
Дата 31.10.2005, 23:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо! Ошибка была там, но и не только.
Я в методе Polygon написал "n", а не "n-1"-там нумерация с нуля, как и в масивах.
Потом не понимая в чём дело, я искал ошибку в другом месте, потом сейчас не понмню даже почему и зачем поставил n+1 в том цикле. Обрадовавшись, что всё рисует там ошибку даже и не ожидал увидеть. Ещё раз Спасибо!
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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