|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.03.2010, 21:40 | #1 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 10
|
Incompatible types "HDC" and "Real"
Ребят, помогите кто может! пишу программу. выдает ошибку Incompatible types "HDC" and "Real". Уже всё перепробовал. не знаю что делать. программа для построения графика функции. объясните мне, пожалуйста, что я делаю неправильно. help!
Вот код программы: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var x,y:real; n:real; begin with Form1.Image1.Canvas do begin x:=-3; while x<3 do x:=x+0.3; y:=(x*x*x)*Sin(x)-1.18; Pixels[Round(100*x)+200,200-Round(20*y)]:=clBlack; end; Form1.Image1.Canvas.MoveTo(0,200); Form1.Image1.Canvas.LineTo(500,200) ; Form1.Image1.Canvas.MoveTo (250,0); Form1.Image1.Canvas.LineTo(250,500) ; n:=0; while n<500 do begin n:=n+100; Form1.Image1.Canvas.MoveTo(Round(n) ,190); Form1.Image1.Canvas.LineTo(Round(n) ,190); TextOut(n,200,FloatToStr((n-250)/50)); end; n:=0; while n<400 do begin n:=n+100; Form1.Image1.Canvas.MoveTo(245,Roun d(400-n)); Form1.Image1.Canvas.LineTo(255,Roun d(400-n)); TextOut(245,400-n,FloatToStr(Round((n-200)/10))); end; end; end. |
05.03.2010, 21:46 | #2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
Процедуру TextOut вызываете неправильно )
Код:
|
05.03.2010, 21:47 | #3 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 216
|
Код:
Последний раз редактировалось Karabash; 05.03.2010 в 21:49. |
05.03.2010, 21:49 | #4 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 10
|
У меня уже голова кругом от этого...
Можете исправить, а? ребят... а то я уже всё... сдаюсь))) |
05.03.2010, 21:50 | #5 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 10
|
Я n изменил на integer. теперь пишет Incompatible types "Integer" and "String"
|
05.03.2010, 21:52 | #6 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 10
|
всё сделал как вы посоветовали) работает! но как-то н играфик не рисует и подписи по осям в другом месте находятся формы... что делать?)
|
05.03.2010, 21:58 | #7 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 216
|
Код:
|
05.03.2010, 22:01 | #8 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 10
|
Спасибо большое) Теперь мне осталось программу написать чтоб график нарисовать..
|
05.03.2010, 22:09 | #9 |
Пользователь
Регистрация: 05.03.2010
Сообщений: 10
|
Вот смотрите, я сюда еще приписал программу которая строит график, но она тоже не хочет работать...
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var x,y:real; n:integer; begin with Form1.Image1.Canvas do begin x:=-3; while x<3 do x:=x+0.3; y:=(x*x*x)*Sin(x)-1.18; Pixels[Round(100*x)+200,200-Round(20*y)]:=clBlack; end; Form1.Image1.Canvas.MoveTo(0,200); Form1.Image1.Canvas.LineTo(500,200) ; Form1.Image1.Canvas.MoveTo (250,0); Form1.Image1.Canvas.LineTo(250,500) ; n:=0; while n<500 do begin n:=n+35; Form1.Image1.Canvas.MoveTo(n,190); Form1.Image1.Canvas.LineTo(n,190); Form1.Image1.Canvas.TextOut(n,200,F loatToStr((n-250)/50)); end; n:=0; while n<400 do begin n:=n+35; Form1.Image1.Canvas.MoveTo(245,400-n); Form1.Image1.Canvas.LineTo(255,400-n); Form1.Image1.Canvas.TextOut(245,400-n,FloatToStr(Round((n-200)/10))); x:=-3; repeat y:= (x*x*x)*Sin(x)-1.18; Pixels[Round(100*x)+200,200-Round(20*y)]:=clRed; x:=x+0,3; until (x>=3); end; end; procedure TForm1.FormResize(Sender: TObject); begin Form1.Image1.Canvas.FillRect(Rect(0 ,0,ClientWidth,ClientHeight)); GrOfFunc; end; procedure TForm1.Button1Click(Sender: TObject); begin GrOfFunc; end; end; end; end. Про Pixels ошибку выдает... |
05.03.2010, 22:18 | #10 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 216
|
Потому что Pixels это свойство класса TCanvas.
Код:
Последний раз редактировалось Karabash; 05.03.2010 в 22:26. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
"ОКРВВЕРХ", "ОКР", "ЕСЛИ". Как бы их связать. | Каравай | Microsoft Office Excel | 13 | 17.02.2010 09:53 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
блок "cont" с права не принимает значение "margin: 10px;" которое описано в body | tabikA | HTML и CSS | 5 | 24.02.2009 21:50 |
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах | mihali4 | Свободное общение | 1 | 17.01.2009 01:43 |