Форум — Ответы ( К темам )
? | Иван: Срочно!!! Проблема с памятью (31-01-2003 11:59:42) |
Люди подскажите почему этот код компилируется нормально а при выполнении выдает ошибку "Acces violation at address 40034838 in module "VCL50.BPL" read of address 00000023" ----------------------------------------------------------------------- void DrowRectangle(){ TMyButton Obj; AnsiString FileBitmap = "klav.bmp"; Graphics::TBitmap *Bitmap; Graphics :: TCanvas *Canvas; Bitmap = new Graphics::TBitmap(); Bitmap->LoadFromFile(FileBitmap); Canvas->Draw(15,197,Bitmap); TPoint points[5]; // НА ЭТОЙ СТРОКЕ ОСТАНАВЛИВАЕТСЯ points[0].x = Obj.GetX0(); points[0].y = Obj.GetY0(); points[1].x = Obj.GetX1(); points[1].y = Obj.GetY0(); points[2].x = Obj.GetX1(); points[2].y = Obj.GetY1(); points[3].x = Obj.GetX0(); points[3].y = Obj.GetY1(); points[4].x = Obj.GetX0(); points[4].y = Obj.GetY0(); Bitmap->Canvas->Pen->Color = clRed; Bitmap->Canvas->Pen->Width = 3; Bitmap->Canvas->Polyline(points,4); Canvas->Draw(15,197,Bitmap); delete Bitmap; } ------------------------------------------------------------------------ Подскажите ,что не так.Спасибо! | |
Георгий (31-01-2003 20:47:41) | |
у тебя на 5-й строке обьявлен указатель на Canvas, но ему не сопоставлен реальный обьект. потом ты для этой canvas вызвал метод, который что-то в памяти испортил и (т.к. это исключение типа ошибки) отладка останавливается на следующей строке. | |
Иван (01-02-2003 01:22:26) | |
Немного переделал код :Ошибка та же,только адрес памяти другой. ----------------------------------------------------------------------- void DrowRectangle(){ TMyButton Obj; Graphics::TBitmap *Bitmap = new Graphics::TBitmap; AnsiString FileBitmap = "klav.bmp"; Bitmap->LoadFromFile(FileBitmap); TImage *Image1; Image1->Picture->Assign(Bitmap); TPoint points[5]; points[0].x = Obj.GetX0(); points[0].y = Obj.GetY0(); points[1].x = Obj.GetX1(); points[1].y = Obj.GetY0(); points[2].x = Obj.GetX1(); points[2].y = Obj.GetY1(); points[3].x = Obj.GetX0(); points[3].y = Obj.GetY1(); points[4].x = Obj.GetX0(); points[4].y = Obj.GetY0(); Bitmap->Canvas->Pen->Color = clRed; Bitmap->Canvas->Pen->Width = 3; Bitmap->Canvas->Polyline(points,4); Image1->Picture->Assign(Bitmap); delete Bitmap; } ------------------------------------------------------------------------ Использование ф-ии в программе: TMyButton Obj; --- --- --- Obj.DrowRectangle(); ------------------------------------------------------------------------ Подскажите ,что не так.Спасибо! | |
Иван (01-02-2003 02:43:30) | |
Люди, можете не отвечать на вопрос --- Я всё понял :) Извините за нехороший вопрос! :)
|