Although you have sorted this,.
A few little points..
First, don't bother checking for Terminated, this is just a boolean that your meant to set. And if your not setting it, then your bit of code will always just infinite loop.
Here is a snippet of code that might be what your after, also I think it's cross platform as it doesn't require any Win specific uses clause.
//wait 6 seconds for thread to finish,
if WaitForThreadTerminate(TestThread.handle,6000) <> 0 then
//didn't finish, lets kill it.
KillThread(TestThread.handle);