You don't need to check whether PosX < PlayerX, this should work the same as your code:

[pascal]procedure TGame.PlayerPort (PosY,PosX : Integer);
var
ColCount, RowCount : Integer;
begin
for RowCount := 1 to 256 do
for ColCount := 1 to 256 do
begin
Sprite[RowCount,ColCount].X := (Sprite[RowCount,ColCount].X -
(GameTiles.Items[0].Width * (PosX - PlayerX)));
Sprite[RowCount,ColCount].Y := (Sprite[RowCount,ColCount].Y -
(GameTiles.Items[0].Height * (PosY - PlayerY)));
end;

GameSurface.Flip;
end;[/pascal]