El 06/03/2013 13:47, Jonas Maebe escribió:

2.6.0, 2.6.2 and 2.7.1 trunk produces a warning with that code, but
with this one 2.6.0, and 2.7.1 trunk does not generate it (I do not
have 2.6.2 to test):

That's because you are passing an uninitialized value to a
var-parameter. That only generates a hint, because a lot of code uses
var-parameters also for parameters that do not yet have to be
initialized (because the code predates the existence of the "out"
keyword, or simply out of habit).

This is unrelated to string results specifically.

Hello,

I had found why I was unable to see the hint, because it is not shown due the special contruction of the function.

This code produces a hint for the "Result: String" not initialized, but not for the "Result: integer" one:

------------------------------------------
program test;

{$mode objfpc}
{$h+}

procedure TheB(var aTheA: string);

begin
  aTheA:=aTheA+'A';
end;

function TheA(): string;

begin
  TheB(Result);
end;

procedure TheNumberB(var aTheB: integer);

begin
  aTheB:=aTheB*2;
end;

function TheNumberA: integer;

  procedure HideTheHint;

  begin
    //As it is a procedure the "Result" var is taken
    //from the function scope.
    TheNumberB(Result);
  end;

begin
  HideTheHint;
end;

Var
  C : String;
  N : integer;

begin
  C:='B';
  C:=TheA;
  C:=TheA;
  Writeln('= "',C,'"');

  N:=1;
  N:=TheNumberA;
  N:=TheNumberA;
  Writeln('= "',N,'"');
end.
-------------------------------------------

Yes, it is a bit obfuscated. I do not known if this is a bug in the hint.

--

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to