First, what's up with this?

Code:
GetKeyState(32) and 128 = 128
Last time I checked 128 equals 128

Now I don't use DelphiX but it seems to me, that you add the bullets to an engine. But when you free the bullets you don't remove them from the engine. I don't know if this is done automatically, but if not this may cause some errors.

Hope it helps a bit.