Glad you got it solved, although not by my tip This is how the function ended up to:
Code:
function Angle(v1, v2: TVector): single;
begin
  norm(v1.x, v1.y, v1.z);
  norm(v2.x, v2.y, v2.z);
  result:=arccos(dot(v1, v2));
end;
Didn't test yet, but i realized that normalized vectors, when their length is multiplied is 1. That leaves it with just dot product.