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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2014, 17:58   #1
danek130995
Пользователь
 
Регистрация: 26.10.2014
Сообщений: 27
По умолчанию В чем ошибка?(Индексированные свойства)

Выдается ошибка Project Project2 raised exception class EClassNotFound with message 'class TShape not found'. Прога рисует прямоугольник с использованием индексированных свойств.
Код:
Unit1:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, Unit2;

type
  TForm1 = class(TForm)
    clrbx1: TColorBox;
    trckbr1: TTrackBar;
    trckbr2: TTrackBar;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    btn1: TButton;

    procedure btn1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure clrbx1Change(Sender: TObject);
    procedure trckbr1Change(Sender: TObject);
    procedure trckbr2Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  MyShape:TMyShape;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   MyShape:=TMyShape.Create(self);
   MyShape.Brush.Color:=clrbx1.Selected;
   MyShape._Height:=200;
   MyShape._Width:=200;
end;

procedure TForm1.clrbx1Change(Sender: TObject);
begin
    MyShape._Color:=clrbx1.Selected;
    MyShape.Brush.Color:=MyShape._Color;
end;

procedure TForm1.trckbr1Change(Sender: TObject);
begin
   MyShape._Height:=trckbr1.Position;
   MyShape.Height:=200+3*MyShape._Height;
end;

procedure TForm1.trckbr2Change(Sender: TObject);
begin
  MyShape._Width:=trckbr2.Position;
  MyShape.Width:=200+10*MyShape._Width;
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  Form1.Close;
end;

end.



Unit2:
unit Unit2;

interface
  uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls;
type
    TMyShape=class(TShape)
   private
       Options:  array[1..3] of integer;
       function  GetOption(const Index: integer): integer;
       procedure SetOption(const Index, Value: integer);
   public
      property _Color:integer 	index 1 read GetOption write SetOption;
      property _Width:integer 	index 2 read GetOption write SetOption;
      property _Height:integer 	index 3 read GetOption write SetOption;
   end;


var
  MyShape:TMyShape;

implementation

function TMyShape.GetOption(const Index: integer): integer;
begin
   result:=Options[index];
end;

procedure TMyShape.SetOption(const Index, Value: integer);
begin
   Options[index]:=value;
end;

end.

Последний раз редактировалось danek130995; 12.11.2014 в 18:34.
danek130995 вне форума Ответить с цитированием
Старый 12.11.2014, 18:05   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

ну так очевидно же – ошибка в 17-й строке!
Ну и бонус тебе, конечно!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 12.11.2014 в 18:08.
min@y™ вне форума Ответить с цитированием
Старый 12.11.2014, 18:27   #3
danek130995
Пользователь
 
Регистрация: 26.10.2014
Сообщений: 27
По умолчанию

Я не нашел кнопки для вставки кода! Я дико извиняюсь за такой код

Цитата:
Сообщение от min@y™ Посмотреть сообщение
ну так очевидно же – ошибка в 17-й строке!
Ну и бонус тебе, конечно!
не могли бы вы поточнее пожалуйста сказать, в какой строке? где именно?

Последний раз редактировалось Stilet; 12.11.2014 в 21:16.
danek130995 вне форума Ответить с цитированием
Старый 12.11.2014, 18:31   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

плохо искалЪ?
Изображения
Тип файла: jpg 10.jpg (12.7 Кб, 131 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 12.11.2014, 18:34   #5
danek130995
Пользователь
 
Регистрация: 26.10.2014
Сообщений: 27
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
плохо искалЪ?
Исправил) так где именно ошибка?
danek130995 вне форума Ответить с цитированием
Старый 12.11.2014, 18:36   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от danek130995 Посмотреть сообщение
не могли бы вы поточнее пожалуйста сказать, в какой строке? где именно?
это мем такой. он означает, что именно ты должен сообщить, в каком месте у тебя вылазит сабж.
в данном случае можно поюзать отладчик.

з.ы. неотформатированный код и/или код без подсветки я не читаю, если в нём больше 5 строк.

Цитата:
Сообщение от danek130995 Посмотреть сообщение
Исправил) так где именно ошибка?
в какой момент возикает сабж?
дебаггер юзал?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось Stilet; 12.11.2014 в 21:16.
min@y™ вне форума Ответить с цитированием
Старый 12.11.2014, 21:16   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

http://www.delphibasics.co.uk/RTL.asp?Name=Property
Где типы свойств? Ну и на геттер и сеттер посмотри как пишут
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.11.2014, 05:52   #8
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

пишу с экранной клавы- не пинайте за пунктуацию.
компиль говорит, что не находит тшейп. то есть либо не подключена библиотека в юните 2 - либо ошиба в том - как ты опсываешь св-ва, что скорее всего.
Код:
    TMyShape=class(TShape)
   private
       Options:  array[1..3] of integer;
так писать неьзя.
Код:
  
Topt= array[1..3] of integer; 
 TMyShape=class(TShape)
   private
       Options: Topt ;
А вот так можно.

помню сам столкнулся с этим. правда мне нужен был динамический массив в классе. а не статический.

Советую почитать - петр дарахвелидзе евгений марков программирование в Delphi 7. где-то на первых 60-70-ти станицах про индексированные св-ва пишут. сорри, что точно не могу скзаать страницу.
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 14.11.2014 в 06:24.
Rin вне форума Ответить с цитированием
Старый 14.11.2014, 12:04   #9
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Цитата:
Сообщение от Rin Посмотреть сообщение
Код:
Options:  array[1..3] of integer;
так писать неьзя.
Можно. Наверное, путаете с подпрограммами, а в классах/структурах можно.
phomm вне форума Ответить с цитированием
Старый 14.11.2014, 20:29   #10
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Извиняюсь за дезинформацию, вчера в полусонном состоянии писал. Вспомнил, почему описывал дин. массив как тип. Гетером и сетером нужно было передавать дин. массив в свойство, а они должны быть одинакового типа.
Только что запустил в delphi ваш код, у вас нет ошибок. У меня все компилится.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем ошибка?(С/С++) Borkot Помощь студентам 2 24.06.2012 12:45
в чем ошибка? Tolian92 Паскаль, Turbo Pascal, PascalABC.NET 2 05.12.2011 23:32
в чем ошибка? Avvakymova Помощь студентам 3 28.05.2011 00:05
C++ Свойства. Ошибка Jane-sad Помощь студентам 2 24.12.2010 14:28