| 
| 
 | Вопрос # 2 914/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!вопрос по xml
 использовал XML Data Binding
 
 мне нужно, чтобы при сохранении в файл, если он существует, обновлялись лишь нужные поля в файле, если такие уже есть,
 
 написал ниже приведенный код, но проблема в том, что при добавлении новых строк увеличивается размер XMLCollection, который просматривается заново каждый раз. естественно, размер коллекции больше, чем сохраненных элементов и выскакивает ошибка.
 
 Подскажите, как грамотнее найти уже сущестующие в файле поля и обновить их?
 Приложение:Переключить в обычный режим var XMLDoc       : TXMLDocument;var XMLCollection: IXMLCollectionType;var XMLItem      : IXMLItemType;var XMLStationType: IXMLStationType; var item   : TDataItem;var I: Integer;var findFile: Boolean;var findItem: Boolean;begin    if ( CollectionPath = '' )    then Exit;     XMLDoc := TXMLDocument.Create(nil);    XMLDoc.Options := XMLDoc.Options + [ doNodeAutoIndent ];     findFile := False;    if ( FileExists(CollectionPath) )    then begin        XMLDoc.LoadFromFile(CollectionPath);        findFile := True;    end;     XMLCollection := TXmlFile.GetCollection(XMLDoc);    XMLCollection.Attributes['Collection'] := TDataFormat.getCollectionName(CollectionPath);     for item in Self    do begin        findItem := False;         for I := 0 to XMLCollection.Count - 1        do begin            if ( item.Name = XMLCollection[ I ].Title )            then begin                findItem := True;                Break;            end;        end;         if findItem        then begin            XMLItem := XMLCollection.Item[ I ];        end        else begin            XMLItem := XMLCollection.Add();             XMLItem.Title       := item.Name;        end;          if IsFact        then XMLStationType := XMLItem.FactStation        else XMLStationType := XMLItem.PlanStation;         XMLStationType.Value       := item.Value;     end;     TXmlFile.SaveCollection(XMLDoc, CollectionPath);     XMLCollection := nil; 
|  |   Вопрос задал: Aндрей (статус: 1-ый класс)Вопрос отправлен: 15 июня 2009, 10:29
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 15 июня 2009, 15:21; участников в обсуждении: 1. 
|   | Aндрей (статус: 1-ый класс), 15 июня 2009, 15:21 [#1]:почему при добавлении XMLItem := XMLCollection.Add(); размерность XMLCollection.Count увеличивается не на единицу, а на некоторое число (иногда 3, иногда 21, ..)??
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |