E2189 Thread-lokale Variablen können nicht lokal zu einer Funktion sein (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Fehler- und Warnungsmeldungen (Delphi)

Thread-lokale Variablen müssen mit globalem Gültigkeitsbereich deklariert werden.


program Produce;

  procedure NoTLS;
    threadvar
      x: Integer;
  begin
  end;

begin
end.

Eine Thread-Variable kann nicht als lokal zu einer Prozedur deklariert werden.


program Solve;

  threadvar
    x: Integer;

  procedure YesTLS;
    var
      localX : Integer;
  begin
  end;

begin
end.

Zur Vermeidung dieses Fehlers gibt es zwei einfache Möglichkeiten. Zum einen kann der Abschnitt threadvar auf lokalen Gültigkeitsbereich gebracht werden. Zum anderen kann der Abschnitt threadvar in der Prozedur in einen normalen var-Abschnitt geändert werden. Beachten Sie, dass für den Fall, dass die Compiler-Hinweise aktiviert sind, ein Hinweis darüber gegeben wird, dass localX zwar deklariert, aber niemals verwendet wird.