Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wprmsite

Verificar se uma variável aponta para uma função

Recommended Posts

Ola pessoal!

 

Estou criando um TRichEdit personalizado em Delphi é estou tendo um problema com uma rotina.

 

Eu criei um ponteiro para uma função.

type  TPalavraReservada = function (palavra: string) : boolean;

 

E em um procedimento criei uma variável deste novo tipo.
 FReservada: TPalavraReservada;

Agora meu problema. Preciso verificar se esta variável, FReserva, esta apontando para alguma função.

Testei desta duas formas:

 

function TGrupo.GetPalavraReservada: TPalavraReservada;
begin
 
  if (@Self.FReservada = nil) then
    Result := @PalavraReservadaNula
    else
    Result := Self.FReservada;
end;

 

function TGrupo.GetPalavraReservada: TPalavraReservada;
begin


  if (Self.FReservada = nil) then
    Result := @PalavraReservadaNula
    else
    Result := Self.FReservada;
end;

No segundo teste nem compilo. Já no primeiro compila mas não funciona, pois antes de chama este método inicializei a variável FReserva com nil e mesmo assim a condição foi verdadeira, e percebe que a variável, ainda assim, continha um endereço atribuido.

 

Alguém ai pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. Utilize as PROPERTY.

 

property OnPalavraReservada: TPalavraReservada read FReservada write FReservada;

 

Mas, para verificar, utilize Assigned.

 

Exemplo:

if Assigned(Self.FReservada) then // significa que existe
  Self.FReservada("");

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Olá. Utilize as PROPERTY.

 

property OnPalavraReservada: TPalavraReservada read FReservada write FReservada;

 

Mas, para verificar, utilize Assigned.

 

Exemplo:

if Assigned(Self.FReservada) then // significa que existe
  Self.FReservada("");

Muito obrigado "thyagoollive"! Era isto mesmo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.