Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2012, 18:17   #1
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию delphi пробелы самообразования

Не знаю на сколько название отображает вопрос, но всё же..

Предыстория: Надо было разобрать XML создаваемый одной программой, вот сел нарисовал блок-схему, какие то структуры наметил, всё вроде хорошо, но тут заглянул в "Delphi world" и обнаружил там небольшой парсер
и в нём


Цитата:
Код:
type
  PXMLNode = ^TXMLNode;

  TXMLValues = (TextNode, XMLNode);
  TXMLNode = record
    Name: string;
    Attributes: array of record
      Name: string;
      Value: string;
    end;
    SubNodes: array of record
      RecType: TXMLValues;
      case TXMLValues of
        TextNode: (Text: PString);
        XMLNode: (XML: PXMLNode);
    end;
    Parent: PXMLNode;
  end;
В общем то мне понятно что происходит, но не понятно как это строится,
и я понял, в моих знаниях АЗОВ огромные дыры.

И наконец то вопрос,


Посоветуйте что прочитать чтоб эти дыры закрыть.

Споткнулся я об это
Код:
SubNodes: array of record
      RecType: TXMLValues;
      case TXMLValues of
        TextNode: (Text: PString);
        XMLNode: (XML: PXMLNode);
    end;
    Parent: PXMLNode;
  end;
vovk вне форума Ответить с цитированием
Старый 02.03.2012, 19:15   #2
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Если это переписать, то:

Код:
type
  PXMLNode = ^TXMLNode;

  TXMLValues = (TextNode, XMLNode);

  TAttribute = record
    Name: string;
    Value: string;
  end;

  TSubNode = record
    RecType: TXMLValues;
    case TXMLValues of
      TextNode: (Text: PString);
      XMLNode: (XML: PXMLNode);
  end;

  TAttributes = array of TAttribute;

  TSubNodes = array of TSubNode;

  TXMLNode = record
    Name: string;
    Attributes: TAttributes;
    SubNodes: TSubNodes;
    Parent: PXMLNode;
  end;
Насчёт case внутри record - см. http://docwiki.embarcadero.com/RADSt...rts_in_Records
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В заданной строке удалить все лишние пробелы(Delphi) darko666 Помощь студентам 2 10.12.2011 22:36
удалить лишние пробелы со строки так чтобы между символами осталось по одному пробелу delphi MASIK Общие вопросы Delphi 7 22.12.2010 18:23
Delphi Написать программу, которая удаляет начальные пробелы из введенной с клавиатуры строки. Xetag Помощь студентам 2 08.06.2010 19:55
[Delphi] Пробелы Рамик Помощь студентам 13 09.07.2009 19:12
Процедура или функция, удаляющая окаймляющие пробелы в строке (Delphi) Аццкий прогер Помощь студентам 2 03.03.2009 04:12