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

У вас в качестве разделителя используются пробелы, значит нужно искать его (пробел) в строке с помощью ф-ции Pos, считывать первую координату, задав количеством символов значение етой функции-1, потом удалять из строки символы с 1 до Pos, и повторять так 2 раза для 3х координат, как у меня в примере.
ЗЫ. В данном случае как первая координата идет параметр from, а X и Y как вторая и третья координата

так пойдет:
Код:
function getcoord(var str:string):string;//функция считывает первую
//координату со строки(до первого пробела) а потом удаляет ее вместе с
//пробелом
var i,j,r:integer;
begin
result:=str;
r:=pos(' ',str);// в кавычках пробел 
if r=0 then exit;
result:=copy(str,1,r-1);//копируем строку до пробела
delete(str,1,r);//удаляем символы строки до пробела включительно
end;

procedure ReadNodes(); 
begin
  list:= TStringlist.Create;
  list.LoadFromFile('c:\nodes.dat');
  i:=0;
  str:= List.Strings[i]; //нулевая строка - информация о препятствиях
  j:=1;
  Inf[j]:=Strtoint(Copy(str,j,1));
  for i:=1 to NK-1 do
  begin
    j:=j+2;
    inf[i+1]:=Strtoint(Copy(str,j,1));
  end;

  for i := 1 to List.Count - 1 do
  begin
    if i>9 then
    begin
      str:= List.Strings[i];
      from:= Strtoint(getcoord(str));
      cities[from].x:=Strtoint(getcoord(str));
      cities[from].y:=Strtoint(getcoord(str));
    end
    else
      begin
        str:= List.Strings[i];
        from:= Strtoint(getcoord(str));
        cities[from].x:=Strtoint(getcoord(str));
        cities[from].y:=Strtoint(getcoord(str));
      end;
  end;
end;
Ответить с цитированием