Ir para conteúdo
  • Cadastre-se

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


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

Recommended Posts

  • Membro Pro Verificado
Postado

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

 

  • Consultores
Postado

é 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

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Membro Pro Verificado
Postado
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
  • Consultores
  • Solution
Postado
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

 

Consultora ACBr Pro

Juliomar Marchetti

Ajude o Projeto ACBr crescer - Seja Pro

discord: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br

 

MVP_NewLogo_100x100_Transparent-02.png
Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 1367 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.

The popup will be closed in 10 segundos...