Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2011, 21:20   #1
*starfish*
Новичок
Джуниор
 
Регистрация: 11.03.2011
Сообщений: 1
По умолчанию "With Form1.Canvas do" не отрисовывает прямоугольник

Доброго времени суток! Пытаюсь научиться программировать в Delphi 7, тренируюсь на домашних заданиях, попробывала написать программку (найти, как меняется некая величина с течением времени). Вот, что получилось:

Код:
procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
P,R,t,G:real;
i:integer;
x:array[1..3600] of TPoint;
begin
t:=StrToFloat(Edit3.Text);
P:=StrToFloat(Edit1.Text);
R:=StrToFloat(Edit2.Text);
//w:=StrToFloat(Edit4.Text);
G:=StrToFloat(Edit5.Text);
//z:=StrToFloat(Edit6.Text);
for i:=1 to 360 do
begin
X[i].y:=150+Round(P*exp(R*t*i-((G*t*t*i)/2)));
X[i].x:=150+i*10;
end;
With Form1.Canvas do
begin
Brush.Color:=clWhite;
Rectangle(40,40,400,300);
Pen.Color:=clRed;
PolyLine(X);
end;
end;
end.
Довольно просто, но только не рисуется линия и нет белого прямоугольника. Подскажите, пожалуйста, в чем ошибка.

Последний раз редактировалось AlDelta; 11.03.2011 в 21:40.
*starfish* вне форума Ответить с цитированием
Старый 12.03.2011, 09:01   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

ошибки не нашёл.
прямоугольник рисуется нормально

а из-за небольшого косяка - массив объявлен на 1..3600 а в цикле заполняется только 1..360, полилиния не рисуется.

ещё такой момент: все у = 150, ибо та сложная скобка постоянно обращается в 0 (экспонента от большого отрицательного числа), а х просто растет на 10
phomm вне форума Ответить с цитированием
Старый 12.03.2011, 10:13   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в том что форма не запоминает рисунок нанесенный на нее, и при первой перерисовке ваш прямоугольник улетает.

рисуйте на TIMage.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.03.2011, 22:09   #4
*starfish*
Новичок
Джуниор
 
Регистрация: 11.03.2011
Сообщений: 1
По умолчанию

Премного благодарна за отклики по моей теме. Для меня очень важны ваши ответы, поскольку имею скудные знания по Delphi,а спросить особо нет у кого. Исправила цикл и перепроверила формулу, забив предварительно в excel- получаются большие цифры, но не обнуляются т. к P=100, G=0.00052, R=0.16. Все равно никак ничего не рисуется. Насколько я знаю, компонента Image отображает на форме графическое изображение, т.е просто фон, а как с её помощью рисовать? И каким способом можно запомнить рисунок, нанесенный на форму? Собственно не столь важен фон, а интересна кривулька, рассчитанная по формуле. Что же не так, подскажите?
*starfish* вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе с canvas "Неверный дескриптор" Алекс Ялта Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 13.06.2011 22:32
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Error: "Canvas does not allow drawing", Delphi7 VVM Общие вопросы Delphi 2 19.07.2009 16:38
Form1 Close "almaz" beegl Общие вопросы Delphi 14 28.07.2008 22:02