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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2010, 12:39   #1
Rid
Пользователь
 
Регистрация: 02.12.2008
Сообщений: 35
Злость Классы.Не видит переменные из самого класса...Вилы=(

Доброго дня всем.Стокнулся с такой проблеммой,вроде описываю передачу информации и получения из одного класса в другой правильно и процедурки с функциями правильно выгледят,а пишет [Error] Unit2.pas(49): Undeclared identifier: 'FName' и так далее,не знаю в чем ошибка плиз подскажите!!!
Вот код 1-:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Derevo: TTreeView;
    strngrd1: TStringGrid;
    procedure FormCreate(Sender: TObject);
    procedure DerevoChange(Sender: TObject; Node: TTreeNode);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var OsnovEl,OnEl,OutEl:TTreeNode;
begin
 OsnovEl := Derevo.Items.Add(nil,'Îñíîâíûå');
 OnEl :=  Derevo.Items.AddChildObject(OsnovEl,'Âõîäíûå',TClas.Create('Òðàíçåð','ÒðàíçÏðîäàêøåí'));
 OutEl := Derevo.Items.AddChildObject(OsnovEl,'ÂÛõîäíûå',TClas.Create('Êîíäåð','ÊîíäåðÏðîäàêøåí'));
end;

procedure TForm1.DerevoChange(Sender: TObject; Node: TTreeNode);
begin
    if Derevo.Selected.AbsoluteIndex <> 0 then
     begin
       TUnit(OsnovEl.Data).DrawGrid(strngrd1);
     end else
     TUnit(Derevo.Selected.Data).ClearGrid(strngrd1);
end;

end.
Вот код 2-:
Код:
unit Unit2;

interface
uses Windows, Classes, Controls, Grids, SysUtils;

type
  TClas = class(TObject)

private
  FName : string;
  FProdukt : string;

protected
  procedure SetName(const s:string);
  function  GetName:string;
  procedure SetProdukt(const s:string);
  function  GetProdukt:string;

public
  constructor Create(AName,AProdukt:string);virtual;
  procedure ClearGrid(AStringGrid:TStringGrid);
  procedure DrawGrid(AStringGrid:TStringGrid);virtual;
  property  Name: string read GetName write SetName;
  property  Produkt: string read GetProdukt write SetProdukt;

end;

implementation

constructor TClas.Create(AName,AProdukt:string);
begin
    FName := AName;
    FProdukt := AProdukt;
end;

procedure ClearGrid(AStringGrid:TStringGrid);
var i:Byte;
begin
  with AStringGrid do
  for i:=1 to RowCount-1 do Rows[i].Clear;
end;

procedure DrawGrid(AStringGrid:TStringGrid);
begin
  ClearGrid(AStringGrid);
  with AStringGrid do
  begin
    Cells[0,1]:= 'Name:';
    Cells[1,1]:= FName;
    Cells[0,2]:= 'Production:';
    Cells[1,2]:= FProdukt;
  end;
end;

function TUnit.GetName:string;
begin
  Result := FName;
end;

function TUnit.GetProdukt:string;
begin
  Result := FProdukt;
end;

procedure SetName(const s:string);
begin
  FName := s;
end;

procedure SetProdukt(const s:string);
begin
  FProdukt := s;
end;

end.
Rid вне форума Ответить с цитированием
Старый 26.04.2010, 01:28   #2
RAZOR3
Пользователь
 
Регистрация: 25.04.2010
Сообщений: 38
По умолчанию

В области видимости переменных. Fname и FProdukt может быть исп. только из класса Tclas
RAZOR3 вне форума Ответить с цитированием
Старый 26.04.2010, 09:05   #3
bitSoft
Programming...
Форумчанин
 
Аватар для bitSoft
 
Регистрация: 13.03.2010
Сообщений: 198
По умолчанию

abivliay tvoi peremenie v Public, a ne v private.
Код:
With TProgrammersForum.Create do  AddNewTopic('Title','Content...');
bitSoft вне форума Ответить с цитированием
Старый 26.04.2010, 12:32   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

пропущено указание на класс
Код:
procedure TClas.SetProdukt(const s:string);
begin
  FProdukt := s;
end;
и вместо описания метода класса получилась простая процедура
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Параметр конструктора класса = объект этого класса nazavrik Общие вопросы C/C++ 6 14.02.2010 13:48
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? TwiX Общие вопросы Delphi 3 15.11.2009 00:54
Pascal//определить длину самого короткого и самого длинного слова в строке ShnurOK Помощь студентам 2 16.12.2007 10:43
Классы и методы класса Exploit Помощь студентам 9 17.12.2006 18:21