Показать сообщение отдельно
  #2  
Старый 15.12.2011, 17:43
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Не работает потому, что в функции 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;
Ответить с цитированием