Dúvida sobre Property

Delphi

09/02/2011

Olá, criei uma property  de set mas nao consigo achar o que pode estar ocorrendo para que não compile o código.



[CODE]
...


Data = classPrivateMes, Dia, Ano: Integer;Publicproperty pMes: integer read Mes write setMes;  //Aqui ocorre o erro.Protectedprocedure setMes(valor: integer);End;


var

// na implementation:procedure Data.setMes (valor: integer);begin   if (valor <= 0) or (valor >= 13) then       // provoca um erro (exceção), alertando para o valor incorreto. raise Exception.Create (‘Valor inválido para o M es!’)   else       Mes := valor;   // recebe o valor correto para mes.end;



procedure TForm1.FormCreate(Sender: TObject);begin
end;
end.















Obrigado.
Olocobixo

Olocobixo

Curtidas 0

Respostas

Marco Salles

Marco Salles

09/02/2011

A definiçao tem que vir antes para que o compilador entenda .. Qnd chegar no property pMes: integer read Mes write setMes;  //Aqui ocorre o erro.   na procedure SetMes , o compilador irá reclamar pois não viu ainda que esta procedure esta definida logo abaixo .. Não é so coisa de linguagem , mas ja que vai trabalhar com POO , comece a dar mais legetibilidade a sua classe   Por exemplo  
type
Data = class
Private
FMes:Integer;
FDia:Integer;  //faça o mesmo para FDia
FAno: Integer;  //faça o mesmo para FAno
protected
function GetFMes: integer;
procedure setfMes(const Value: integer);
Public
property Mes: integer read GetFMes write setfMes;  //Aqui ocorre o erro.
End;
 
function Data.GetFMes: integer;
begin
result:=FMes;
end;
procedure Data.setfMes(const Value: integer);
begin
 FMes:=Value;
end;
  Outra coisa importante ... Na Unidade da classe onde ela esta definida sempre trabalhe com o campo Privado e nunca com a propriedade .. No caso do seu exemplo é sempre assim FMes:=Recebe Alguma Coisa e Nnunca assim: Mes:=Recebe Alguma coisa;   Fora da Unidade ai vc acessa a Property Mes:=AlgumaCoisa   Pode parecer bobo mas evita problemas no futuro
   
GOSTEI 0
José

José

09/02/2011

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0
POSTAR