|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
JCL сортировка XML
Уважаемые форумчане, прошу Вашей помощи!
Используя XE2 (x86) и TJclSimpleXML из библиотеки JCL ($Date:: 2012-09-04, $Rev:: 3861) пытаюсь отсортировать теги по значению их свойства (если оно есть) и получаю Invalid pointer operation. Код:
procedure T_MainForm._Sort(Elems: TJclSimpleXMLElems); var i : Integer; begin Elems.CustomSort(CompareXMLItems); for i := 0 to Elems.Count-1 do if Elems[i].Items<>nil then if Elems[i].ItemCount>1 then _Sort(Elems[i].Items); end; function T_MainForm.CompareXMLItems(Elems: TJclSimpleXMLElems; Index1, Index2: Integer): Integer; begin if (Elems[Index1].Properties<>nil) and (Elems[Index2].Properties<>nil) then begin if Elems[Index1].Properties.IntValue('Id')<Elems[Index2].Properties.IntValue('Id') then Result := -1 else if Elems[Index1].Properties.IntValue('Id')>Elems[Index2].Properties.IntValue('Id') then Result := 1 else Result := 0; end else Result := 0; end; procedure T_MainForm.Button1Click(Sender: TObject); var fName : String; begin fName := ExtractFilePath(ParamStr(0))+'entity.xml'; xml := TJclSimpleXML.Create; xml.LoadFromFile(fName); _Sort(xml.Root.Items); xml.Options := xml.Options - [sxoAutoEncodeValue]; xml.SaveToFile(fName+'.!!!.xml'); FreeAndNil(xml); end; Ошибка возникает в фукнкции JclSimpleXml.QuickSort в момент переприсваивания указателей. Помогите, пж, понять: в чём я не прав? Полный тестовый проект в приложении. |