Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
7 / 7 / 2
Регистрация: 08.12.2012
Сообщений: 108
1

Перегружаемые и виртуальные методы (ошибка)

10.12.2012, 21:16. Просмотров 525. Ответов 4
Метки нет (Все метки)


Ребята, выручайте! Программа должна выводить рандомные числа. Возникает ошибка при запуске.

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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, Menus;
type TNum = class(TObject)
 
private
N: integer;
 
public
constructor Create(n0 : integer);
end;
TCard = class (TShape)
public
constructor Create(AOWner : TComponent); override;
procedure Paint; override;
procedure Reaction(Sender: TObject);
end;
 
type TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure N1Click(Sender: TObject);
    end;
 
var
  Form1: TForm1;
  NumList : TList;
implementation
 
{$R *.dfm}
 
const nx=4; ny=3; delta=40; thick=4;
var Table: array [1..nx, 1..ny] of TCard;
Number: word;
constructor TCard.Create(AOWner : TComponent);
begin
  inherited Create(AOwner);
  Width:=delta;
  Height:=delta;
  Brush.Color:=clLime;
  OnClick:=Reaction;
end;
 
procedure TCard.Paint;
begin
  inherited Paint;
  Canvas.Font.Size:=16;
  Canvas.TextOut(4, 4, Format('%2d',[Tag]));
end;
 
procedure TCard.Reaction(Sender: TObject);
begin
  if Tag=Number then
  begin
  Visible:=False;
  if Number = nx*ny then Form1.N1.Enabled:=True;
  inc(Number);
  end;
end;
 
constructor TNum.Create(n0:integer);
begin
  N:=n0;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var i,j,k: integer;
begin
  NumList:=TList.Create; 
  for k:=1 to nx*ny do NumList.Add(TNum.Create(k));
  ClientWidth:=nx*(delta+thick)+thick;
  ClientHeight:=ny*(delta+thick)+thick;
  for i:=1 to nx do begin
  for j:=1 to ny do begin
  Table[i,j]:=TCard.Create(Self);
  Table[i,j].Parent:=Self;
  Table[i,j].Left:=(i-1)*(delta+thick)+thick;
  Table[i,j].Top:=(j-1)*(delta+thick)+thick;
end;
end;
  N1.Click;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var Num: TNum;
k: integer;
begin
  for k:=0 to NumList.Count-1 do begin
  Num:=NumList.Items[k];
  Num.Free;
end;
  NumList.Free;
end;
 
procedure TForm1.N1Click(Sender: TObject);
var i,j,k,Limit: integer;
Num: TNum;
begin
  Limit:=NumList.Count;
  for i:=1 to nx do begin
  for j:=1 to ny do begin
  k:=random(Limit);
  dec(Limit);
  Num:=NumList.Items[k];
  NumList.Delete(k);
  NumList.Add(Num);
  Table[i,j].Tag:=Num.N;
  Table[i,j].Visible:=True;
end;
end;
  Number:=1;
  N1.Enabled:=False;
end;
 
initialization
randomize;
end.
Примерно как должно быть:
Название: bf8bb0e34a62.jpg
Просмотров: 63

Размер: 17.5 Кб

Как есть:
Перегружаемые и виртуальные методы (ошибка)


Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2012, 21:16
Ответы с готовыми решениями:

Как совместить код, реализующий методы и перегружаемые операции
Есть такое задание::::) Разработать класс «Вектор» – Vektor размерности n . Определить несколько...

виртуальные методы
как вызвать виртуальный метод базового класса из наследуемого класса? struct A { virtual void...

виртуальные методы
#include<iostream> #include<stdlib.h> using namespace std; class MArray { protected:...

Виртуальные методы
народ вот пример с виртуальными методами, и вывод этой программы class Ancestor { public: ...

4
Пишу на Delphi...иногда
1418 / 1275 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
10.12.2012, 21:26 2
точку останова на 76 строчку, F9, потом F8, на какой строке ошибка?
0
7 / 7 / 2
Регистрация: 08.12.2012
Сообщений: 108
10.12.2012, 21:37  [ТС] 3
Цитата Сообщение от cotseec Посмотреть сообщение
точку останова на 76 строчку, F9, потом F8, на какой строке ошибка?
Как бы в том и интерес, что это не совсем ошибка. Не правильно выразился.
Описываю 2 случая. 1 - При запуске программы возникает вот это страшное уведомление
2 - Программа запускается, но выполнение кода не происходит. Просто пустое поле.

Эти 2 случая возникают беспорядочно.
0
Пишу на Delphi...иногда
1418 / 1275 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
10.12.2012, 21:44 4
У меня все работает
1
Вложения
Тип файла: zip Test4.zip (212.6 Кб, 4 просмотров)
7 / 7 / 2
Регистрация: 08.12.2012
Сообщений: 108
10.12.2012, 21:50  [ТС] 5
Цитата Сообщение от cotseec Посмотреть сообщение
У меня все работает
Очень странно. Спасибо большое
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.12.2012, 21:50

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Виртуальные методы
Преобразуйте методы базового класса в виртуальные и переопределите их в производных...

Виртуальные методы
Всем доброго времени суток! Вопрос следующий. Как я могу функцией делать подмену виртуального...

Виртуальные методы
Дан родительский класс Animal (поле кличка). И два наследованных от него класса-потомка: Cat (поле...

Виртуальные методы
...в голове не укладываются. Помогите кто может :confusion: У меня про них сложилось...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.