已分配(TStopWatch)给出 E2008

Assigned(TStopWatch) gives E2008

if assigned(S3) then Log('TChunkManager.UpdateVertices Create VAO ms: ' + 
  S3.ElapsedMilliseconds.ToString);

问题出在分配的部分,我尝试使用 Log('aaa') 并且 Log 在其他地方也能正常工作。为什么S3(TStopwatch)与assigned不兼容?

**[dcc64 Error] thChunkManager.pas(529): E2008 Incompatible types**

如何检查 S3 是否已创建?

TStopWatch is a record type, not a class type。可以在调用线程的堆栈内存中创建记录的实例。 class 类型的实例必须在堆内存中动态分配。只能将指针传递给 Assigned()。堆栈上的记录实例不算数。

对于您的尝试,您可能想使用 TStopWatch.IsRunning 属性 代替:

if S3.IsRunning then
  Log('TChunkManager.UpdateVertices Create VAO ms: ' + S3.ElapsedMilliseconds.ToString);