Назначенный (TStopWatch) дает E2008

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

Проблема в назначенной части, я пробовал с Log('aaa'), а также Log отлично работает в других местах. Почему S3 (TStopwatch) несовместим с назначенным?

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

Как я могу проверить, создан ли S3 или нет?

1 ответ

Решение

TStopWatch это тип записи, а не тип класса. Экземпляр записи может быть создан в памяти стека вызывающего потока. Экземпляр типа класса должен динамически размещаться в динамической памяти. Только указатели могут быть переданы Assigned(), Экземпляр записи в стеке не считается.

Для того, что вы пытаетесь, вы, вероятно, хотите использовать TStopWatch.IsRunning свойство вместо:

if S3.IsRunning then
  Log('TChunkManager.UpdateVertices Create VAO ms: ' + S3.ElapsedMilliseconds.ToString);
Другие вопросы по тегам