Dúvida sobre Property
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.
[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
Curtidas 0
Respostas
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
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
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;
GOSTEI 0
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