Не работает потому, что в функции Copy(str,3,
2) ты задаешь 2 символа для копирования, и соответственно следующее число начинаешь читать не с той позиции (с 4й например, а не с 5й)
Вот у меня есть ф-ция, которой я превращал строку в вектор, там как разделитель используются запятые, можешь переделать на пробелы
Код:
Function ConsoleCommand.texttopoint(var text:string;var Point:Tvector):Boolean;
var str1,xstr,ystr,zstr:string;err:integer;len,zap1:integer;
temp:Single;
begin
str1:=text;
len:=length(str1);
if len>=5 then begin
zap1:=pos(',',str1);
xstr:=copy(str1,1,zap1-1);
val(xstr,temp,err);
if err=0 then begin
delete(str1,1,zap1);
zap1:=pos(',',str1);
ystr:=copy(str1,1,zap1-1);
val(ystr,temp,err);
if err=0 then begin
delete(str1,1,zap1);
zstr:=str1;
val(zstr,temp,err);
end;
end;
if err=0 then begin
Point.X:=strtofloat(xstr);
Point.Y:=strtofloat(ystr);
Point.Z:=strtofloat(zstr);
result:=true;
end else begin
text:=format('_Error:"%s" не является координатами 3D точки',[text]);
Result:=false;
end;
end else begin
text:=format('_Error:"%s" не является координатами 3D точки',[text]);
Result:=false;
end;
end;