Показать сообщение отдельно
  #1  
Старый 15.12.2011, 17:28
Reedberg Reedberg вне форума
Прохожий
 
Регистрация: 29.05.2011
Сообщения: 8
Репутация: 10
По умолчанию Считывание координат

Здравствуйте! Нужно считать из .dat файла данные (координаты точек). Данные в файле представлены в следующем виде:

2 5 3 3 3 3 7 3
1 10 10
2 95 95
3 10 80
4 10 70
5 40 70
6 40 90
7 35 90
8 35 80
9 15 20

Первую строчку не трогаем, первую строчку считываем в отдельный массив [inf]. Все что ниже первой строчки записываем в массив целых чисел [cities].

Код:
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(Copy(str,1,2));
      cities[from].x:=Strtoint(Copy(str,4,2));
      cities[from].y:=Strtoint(Copy(str,7,2));
    end
    else
      begin
        str:= List.Strings[i];
        from:= Strtoint(Copy(str,1,1));
        cities[from].x:=Strtoint(Copy(str,3,2));
        cities[from].y:=Strtoint(Copy(str,6,2));
      end;
  end;
end;

Функция не работает, если координаты точки больше 99, то есть координата содержит три цифры. Как это исправить?
Ответить с цитированием