deltaTime := timegettime - lastTime ;
lastTime := timegettime;

-----
x:=x+0.1*deltatime

Lets see, this SHOULD work should it not

If cpu cannot keep up theoretically the next time it executes the loop it will just have a greater deltatime and move character by that amount

I think I understand

and 0.1 part would be pixels moved...so 1/1000 would be 1 pixel a second?