Показать сообщение отдельно
  #6  
Старый 23.03.2018, 15:38
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
 i, j: integer;
begin
 XMLDocument1.LoadFromFile('test.xml');
 XMLDocument1.Active:= true;
 with XMLDocument1.DocumentElement.ChildNodes['city'] do
  for i := 0 to ChildNodes.Count-1 do
  if ChildNodes.Nodes[i].NodeName = 'step' then
  with StringGrid1 do
   begin
    RowCount:= RowCount+1;
    Cells[0,RowCount-1]:= VarToStr(ChildNodes['cityname'].Text);
    Cells[1,RowCount-1]:= VarToStr(ChildNodes['citytime'].Text);

    for j := 0 to ChildNodes.Nodes[i].ChildNodes.Count-1 do
     Cells[j+2, RowCount-1]:= VarToStr(ChildNodes.Nodes[i].ChildNodes.Nodes[j].Text);
   end;
 XMLDocument1.Active := false;
end;
Небольшой ликбез - конструкция with..do специально создана для сокращения набивки на клаве повторяющихся структур, и поэтому, "ледяной лёд" в виде
Код:
with XMLDocument1.DocumentElement.ChildNodes['city'] do
   begin
StringGrid1.Cells[1,StringGrid1.RowCount-1]:=VarToStr ({XMLDocument1.DocumentElement.ChildNodes['city'].}ChildNodes['cityname'].Text);
StringGrid1.Cells[2,StringGrid1.RowCount-1]:=VarToStr ({XMLDocument1.DocumentElement.ChildNodes['city'].}ChildNodes['citytime'].Text);
   end;
совершенно необязателен, всё, что в фигурных скобках можно смело выбросить, клавина мембрана пасибки не раз скажет :-)
Ответить с цитированием