已分配(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);
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);