...
-> ASSERT((oData <> nil) and (oData.FState = tsWaiting) and (oData.FTimer <> nil));
...
würde doch bedeuten, dass wenn oData und oData
nicht nil sind, müsste oData.FState = tsWaiting sein
wenn oData und oData.FTimer nicht nil sind, müsste oData.FState
<> tsWaiting sein, damit die Assertion fehl schlägt.