Ir para conteúdo
  • Cadastre-se

dev botao

Tratando alerta - Variável pode não ser inicializada


Ver Solução Respondido por Juliomar Marchetti,
  • Este tópico foi criado há 598 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá a todos,

Estou com o seguinte código

procedure ...
var
  jsonValue: TJSONValue;
begin
   try
     RESTRequest1.Method := rmPOST;
     RESTRequest1.Resource := '';
     RESTRequest1.Params.ParameterByName('body').Value := jsonInsert;
     RESTRequest1.Execute;
     jsonValue := TJSONObject.ParseJSONValue(RESTResponse1.Content);
     inseridos := jsonValue.GetValue<integer>('result');
  finally
     jsonValue.Free;
  end;
end;

Bem, com esse código recebo o alerta abaixo:

[dcc32 Warning] Unit1.pas(236): W1036 Variable 'jsonValue' might not have been initialized

Até tudo bem, pois sei que o alerta surgiu pelo fato de eu não ter inicializado ela antes do try.

Então coloquei o seguinte comando antes:

jsonValue := nil;

Com isso o alerta sumiu...

Mas existe alguma forma mais "recomendável" de inicializar essa variável?

Desde já agradeço a atenção

 

Link para o comentário
Compartilhar em outros sites

  • Moderadores

é que tu colocou um try finally

ele espera que antes de try tenha a inicialização dela.

neste caso tu recebe de uma conversão

ela deveria ter o try a partir do momento que você popula ela. pois se tu seta nil e der algum erro antes de tu pegar ela vai gerar A.V.

pois vai tentar destruir um nil

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
RESTRequest1.Method := rmPOST;
RESTRequest1.Resource := '';
RESTRequest1.Params.ParameterByName('body').Value := jsonInsert;
RESTRequest1.Execute;
jsonValue := TJSONObject.ParseJSONValue(RESTResponse1.Content);
try
  inseridos := jsonValue.GetValue<integer>('result');
finally
  jsonValue.Free;
end;

Tipo assim?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores
  • Solution
2 horas atrás, bnobre disse:
RESTRequest1.Method := rmPOST;
RESTRequest1.Resource := '';
RESTRequest1.Params.ParameterByName('body').Value := jsonInsert;
RESTRequest1.Execute;
jsonValue := TJSONObject.ParseJSONValue(RESTResponse1.Content);
try
  inseridos := jsonValue.GetValue<integer>('result');
finally
  jsonValue.Free;
end;

Tipo assim?

Issso mesmo pois a variavel só entra nesse contexto ;-)

  • Obrigado 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 598 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.