The following code should ( tested in a console app ) lock your FPS to a TargetFPS.

[pascal]
procedure TSDLTicks.LockFPS(targetFPS: Byte);
var
currentTime : UInt32;
targetTime : single;
begin
if (targetFPS = 0) then
targetFPS := 1;

targetTime := m_ticksPerSecond / targetFPS;

// delay to maintain a constant frame rate
repeat
currentTime := SDL_GetTicks;
until ( (currentTime - s_lastTime ) > targetTime );

// reset the timer
s_lastTime := currentTime;
end;
[/pascal]