Ir para conteúdo

POWERED BY:

Arquivado

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

Davi Brito

[Resolvido] Bug do Delphi

Recommended Posts

aí... alguém pode me explicar porque dentro de uma function é possivel sair sem dar um result. Eu criei uma function aqui que não retorna nada apena da um showmessage

 

function Teste : string

begin

showMessage('Teste');

end;

 

em seguida eu mandei uma variavel receber o valor do método:

 

var

str : string;

begin

str := Teste();

end;

 

e não apresentou erro algum... alguem poderia me explicar se é o meu conceito que esta errado ou se é um bug.

Compartilhar este post


Link para o post
Compartilhar em outros sites

aí... alguém pode me explicar porque dentro de uma function é possivel sair sem dar um result. Eu criei uma function aqui que não retorna nada apena da um showmessage

 

function Teste : string

begin

showMessage('Teste');

end;

 

em seguida eu mandei uma variavel receber o valor do método:

 

var

str : string;

begin

str := Teste();

end;

 

e não apresentou erro algum... alguem poderia me explicar se é o meu conceito que esta errado ou se é um bug.

 

 

Experimente assim

Function teste: String
var
  variavel : string;
begin
  variavel := "Alguma mensagem";
end;

var
  str : string
begin
  ShowMessage(Teste());
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

o fato é que realmente estou confuso... isso não era pra acontecer, deveria haver um result. Pq eu obtenho um retorno de uma function sem declarar o result ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você não atribuir nenhum valor ao resultado da função, o dephi irá retornar o valor de anulação corresponente ao tipo de dado retornado pela função (vai "zerar" o resultado);

Compartilhar este post


Link para o post
Compartilhar em outros sites

como assim um valor de anilação... é o null ?

 

O Delphi tentará um valor padrão para o resultado.

 

Se o resultado da função for:

string ele retornará : '';

integer ele retornará : 0;

real ele retornará : 0;

CallBack ele retornará : nil;

 

e assim por diante...

 

é como se a primeira linha da função fosse oculta e contivesse:

 

Result := '';

 

;)

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.