Code:
procedure addValue(vertices: PArraySingle);
  var   iStream: Stream;
begin
    iStream.vertices := vertices;
end;
shouldn't iStream be created first? or passed as parameter