Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
1

оператор read при работе с графикой.

18.07.2010, 20:08. Показов 895. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
мне надо присвоить значение переменной с с клавиатуры. компиляция проходит успешно но после того, как я нажимаю мышой в форме(при нажатии мышки должен появиться куб, без оператора read(c) он нормально работает) вылезает ошибка в рамочке с крестиком. ее содержание:

Project Project13.exe raised exception class EInOutError with message 'I/O error 6'. Process stopped. use Step or Run to continue.

как мне это исправить? если мне все-равно надо вводить значение для с с клавиатуры?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2010, 20:08
Ответы с готовыми решениями:

Ошибки при работе с графикой
Помогите с QBasic. Я просто в основнов занимаюсь Паскалем и редко встречался с бейсиком. Как мне...

Ошибка при работе с графикой
Написал свою первую програмку на графику: Код: #include <graphics.h> #include <stdio.h>...

Лаги при работе с графикой со свойством BackgroundImage
Значит вот такой лажа на Vb.NET 1.Имеется frm_main и этой форме присвоено свойство...

При работе с графикой цвет текста в консоли упорно меняется на черный
Помогите пожалуйста :confusion: uses crt, graph; type TPoint = object x, y, color:...

9
Реальность Нереальна!
352 / 128 / 7
Регистрация: 02.08.2009
Сообщений: 3,216
Записей в блоге: 1
18.07.2010, 20:28 2
формат используемого изображения какой ?попробуйте использовать ВМР по умолчанию
0
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
18.07.2010, 20:34  [ТС] 3
я рисую куб прямо там, с помощью
Delphi
1
2
3
4
5
6
7
for i:=1 to 4 do begin
      Form1.Canvas.MoveTo(200+B[i,1],100+B[i,2]);       //Встаём на i вершину
      Form1.Canvas.LineTo(200+B[i+1,1],100+B[i+1,2]);   //Рисуем линию к i + 1 вершине
      Form1.Canvas.MoveTo(200+B[i,1],200+B[i,2]);       //Встаём на i вершину 2го квадрата
      Form1.Canvas.LineTo(200+B[i+1,1],200+B[i+1,2]);   //Рисуем линию к i + 1 вершине 2го квадрата
      Form1.Canvas.LineTo(200+B[i+1,1],100+B[i+1,2]);   //Cоединяем вершины квадратов
    end;
задав до этого массив координат вершин. формат изображения тут не причем я думаю
0
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
18.07.2010, 20:39 4
а код можно, чтобы локализовать ошибку
0
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
18.07.2010, 20:46  [ТС] 5
конечно, вот он:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
 
 
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
label m1;
var
    i: integer;
    a: real;
    B: array[1..5,1..2] of integer;
    c: integer;
 
  begin
    m1:
    Form1.Refresh;
    Canvas.Pen.Width:=1;
    Canvas.Pen.Color:=clBlue;
//заполняем массив координат вершин куба
    a:=-0.39;
    for i:=1 to 5 do begin
      B[i,1]:=trunc(80*sin(a+i*pi/2));
      B[i,2]:=trunc(-20*cos(a*2+i*pi/2));
    end;
//отрисовываем квадраты(синие)
    for i:=1 to 4 do begin
      Form1.Canvas.MoveTo(200+B[i,1],100+B[i,2]);       //встаём на i вершину
      Form1.Canvas.LineTo(200+B[i+1,1],100+B[i+1,2]);   //рисуем линию к i+1 вершине
      Form1.Canvas.MoveTo(200+B[i,1],200+B[i,2]);       //встаём на i вершину 2 квадрата
      Form1.Canvas.LineTo(200+B[i+1,1],200+B[i+1,2]);   //рисуем линию к i+1 вершине 2 квадрата
      Form1.Canvas.LineTo(200+B[i+1,1],100+B[i+1,2]);   //соединяем вершины квадратов
    end;
    read(c);/////////////////////////////<----------без этого все работает, рисуется куб, и опять перерисовывается
    if c=1 then a:=a+0.05;
    goto m1;
 
end;
end.
0
Реальность Нереальна!
352 / 128 / 7
Регистрация: 02.08.2009
Сообщений: 3,216
Записей в блоге: 1
18.07.2010, 20:56 6
feck, так а откуда у тебя должно читаться "с". Ты его хоть введи в Эдит
1
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
18.07.2010, 21:06  [ТС] 7
а как и где?
0
Реальность Нереальна!
352 / 128 / 7
Регистрация: 02.08.2009
Сообщений: 3,216
Записей в блоге: 1
18.07.2010, 21:35 8
feck, ну например при создании формы
Delphi
1
с:=StrToInt(Edit1.Text)
Добавлено через 21 минуту
feck, работает?
1
7 / 7 / 3
Регистрация: 19.03.2010
Сообщений: 182
18.07.2010, 21:35  [ТС] 9
спасибо большое! но я сосем не давно начал заниматься дельфи, можешь сказать поточнее после чего именно это нужно написать?))
0
Реальность Нереальна!
352 / 128 / 7
Регистрация: 02.08.2009
Сообщений: 3,216
Записей в блоге: 1
18.07.2010, 21:41 10
feck, ааа....я забыл дописать можешь добавить событие OnCreate для формы и там вписать код, из моего предыдущего поста.
Просто у тебя возникает исключительная ситуация. Если не хочешь возиться с эдитом, то можешь написать так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
 
 
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
label m1;
const c=1; // см комент
var
    i: integer;
    a: real;
    B: array[1..5,1..2] of integer;
    c: integer;
 
  begin
    m1:
    Form1.Refresh;
    Canvas.Pen.Width:=1;
    Canvas.Pen.Color:=clBlue;
//заполняем массив координат вершин куба
    a:=-0.39;
    for i:=1 to 5 do begin
      B[i,1]:=trunc(80*sin(a+i*pi/2));
      B[i,2]:=trunc(-20*cos(a*2+i*pi/2));
    end;
//отрисовываем квадраты(синие)
    for i:=1 to 4 do begin
      Form1.Canvas.MoveTo(200+B[i,1],100+B[i,2]);       //встаём на i вершину
      Form1.Canvas.LineTo(200+B[i+1,1],100+B[i+1,2]);   //рисуем линию к i+1 вершине
      Form1.Canvas.MoveTo(200+B[i,1],200+B[i,2]);       //встаём на i вершину 2 квадрата
      Form1.Canvas.LineTo(200+B[i+1,1],200+B[i+1,2]);   //рисуем линию к i+1 вершине 2 квадрата
      Form1.Canvas.LineTo(200+B[i+1,1],100+B[i+1,2]);   //соединяем вершины квадратов
    end;
    read(c);/////////////////////////////<----------без этого все работает, рисуется куб, и опять перерисовывается
    if c=1 then a:=a+0.05;
    goto m1;
 
end;
end.
Комент: для сравнения добавь константу. Раз скомпиль с "1", а потом с отличным от 1 числами и ты увидишь будет твой куб прорисовываться повторно или нет

ЗЫ метки срарайся не использовать!!!
0
18.07.2010, 21:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.07.2010, 21:41
Помогаю со студенческими работами здесь

Ошибка при работе с графикой. Не распознается библиотека "cstdlib"
Здравствуйте, прошу помочь с запуском программы. Я её компилировал в старом Борланде и там куча...

Ошибка при работе с графикой "недостаточно памяти"
Изучаю графику на с#. Набираю пример из книги, а он выдает ошибку &quot;Недостаточно памяти&quot; Чтобы не...

Не получается перегрузить оператор ++ при работе с массивами
Текст: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; class array { ...

По работе с графикой
Подскажите пожалуйста. Нужно сделать программу, в которой необходимо нарисовать фигуру (не имеет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru