Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.19;
Скачать: CL | DM;

Вниз

как саписать данные из Edit в файл xml   Найти похожие ветки 

 
Daria   (2006-02-07 14:25) [0]

Всем привет. Надо, чтобы пользователь на формочке вводил в едиты данные, а после надатия на кнопочку,эти данные записывались в файл .xml


 
wal ©   (2006-02-07 14:28) [1]

Если данных не очень много, то можно просто текстовый файл записать.


 
Daria   (2006-02-07 14:30) [2]

со всеми тэгами? просто потом еще надо, чтобы пользователь выбирал xml файл и он выводился в читаемом виде(без тэгов, только данные)


 
wal ©   (2006-02-07 14:34) [3]


> просто потом еще надо...

А что-то еще надо? Если нет, то какой глубокий смысл использовать именно xml?


 
Daria   (2006-02-07 14:38) [4]

такие требования. файл должен быть xml. а девочка, которая будет данные вводить ничего не знает, ничего не понимает. ей надо сделать формочку с едитами, куда она будет вбивать данные, нажимать на кнопочку - и файл сформирован


 
Reindeer Moss Eater ©   (2006-02-07 14:40) [5]

TXMLDocument + форма едитами


 
wal ©   (2006-02-07 14:48) [6]

Формат xml-я как-то оговорен?


 
Daria   (2006-02-07 14:51) [7]

да. оговрен.


 
wal ©   (2006-02-07 15:05) [8]

Создаешь шаблон с пустыми тэгами. Дальше что-то вроде этого:
uses MSXML2_TLB;
---
var
 xml: DOMDocument;
 nl: IXMLDomNodeList;
 i: integer;
begin
   xml := CoFreeThreadedDOMDocument.Create;
   xml.async := false;
   xml.loadXML(шаблон);
   nl := xml.selectNodes(путь к нужным тэгам)
   for i:=0 to nl.length do
     nl.item[i].text := Edit[n].text
   xml.save(файл)
end;


 
Daria   (2006-02-07 15:12) [9]

спасибо большое! сейчас попробую


 
Daria   (2006-02-07 15:15) [10]

ой, а он пишет, что не найден файл MSXML2_TLB.dcu


 
Fay ©   (2006-02-07 15:18) [11]

http://mv.rb.ru/simplexml.htm


 
wal ©   (2006-02-07 15:22) [12]

Меню Project-Import Type Library-Microsoft XML v3.0-Create Unit


 
Daria   (2006-02-07 15:45) [13]

елки, он пишет access violation на строке nl.item[i].text := Edit[n].text


 
wal ©   (2006-02-07 15:49) [14]

Полностью код приведи


 
Daria   (2006-02-07 15:51) [15]

var
xml: DOMDocument;
nl: IXMLDomNodeList;
i: integer;
begin
  xml := CoFreeThreadedDOMDocument.Create;
  xml.async := false;
  xml.loadXML("C:\tests.xml");
  nl := xml.selectNodes("Name");
 for i:=0 to nl.length do
  nl.item[i].text := LabeledEdit1.text;
  xml.save("C:\tests.xml");
end;


 
Daria   (2006-02-07 15:51) [16]

а сам файл tests.xml такой должен быть?

 <?xml version="1.0" encoding="windows-1251" ?>
- <INQ version="1">
- <THEADER>
 <CreateDate>20.07.2005</CreateDate>
 </THEADER>
- <TBODY>
- <ChangeCode>
- <KeyData>
- <KEYLP>
 <Name></Name>
 <EGRN></EGRN>
 <INN></INN>
 </KEYLP>
 </KeyData>
 <SubjectCode></SubjectCode>
 <Email></Email>
 <NewCode></NewCode>
 </ChangeCode>
 </TBODY>
 </INQ>


 
Reindeer Moss Eater ©   (2006-02-07 15:52) [17]

for i:=0 to Pred(nl.length) do


 
wal ©   (2006-02-07 15:53) [18]

Если считываешь из файла, то просто load, а не loadXML


 
wal ©   (2006-02-07 15:54) [19]


> [17] Reindeer Moss Eater ©   (07.02.06 15:52)
Точно, старею :)


 
wal ©   (2006-02-07 15:55) [20]


> [16] Daria   (07.02.06 15:51)
а что это за минусы?


 
Reindeer Moss Eater ©   (2006-02-07 15:59) [21]

Кстати, можно ли сочинить такой XPath, который вернет все узлы в иерархии начиная с корня?


 
Daria   (2006-02-07 15:59) [22]

ой, минусы - фигня какая-то.
тэк-с, все работает. сохраняется, только абсолютно пустой файл


 
Daria   (2006-02-07 16:12) [23]

все, уже не пустой, но такой же как и был до запуска программы. т.е. ничего не добавляется. вот мне в name нужно добавить из edit1


 
wal ©   (2006-02-07 16:20) [24]


> [21] Reindeer Moss Eater ©   (07.02.06 15:59)
/descendant-or-self::*

> [23] Daria   (07.02.06 16:12)
> nl := xml.selectNodes("Name");

"/INQ/TBODY/ChangeCode/KeyData/KEYLP/Name"


 
Daria   (2006-02-07 16:26) [25]

ой, спасибо огромное!!!! впервые в жизни вижу xml. пойду учить заодно :))
wal, ты просто гений!!!!


 
Сенокур Петя   (2006-02-14 15:06) [26]


> тэк-с, все работает. сохраняется, только абсолютно пустой
> файл
> <Цитата>
>
>
> Daria   (07.02.06 16:12) [23]
> все, уже не пустой, но такой же как и был до запуска программы.
>  т.е. ничего не добавляется. вот мне в name нужно добавить
> из edit1


а у меня файл пустой.... не подскажите в чем проблема?... не могу найти причину (в отличии от Daria )  :)


 
wal ©   (2006-02-14 15:12) [27]


> [26] Сенокур Петя   (14.02.06 15:06)
Код давай


 
Сенокур Петя   (2006-02-14 15:19) [28]


> wal ©   (14.02.06 15:12) [27]


так я просто пока вникаю в
> как саписать данные из Edit в файл xml

и взял код самого файла xml из
> Daria   (07.02.06 15:51) [16]


а сам код
Это на Button1.Click
> var
> xml: DOMDocument;
> nl: IXMLDomNodeList;
> i: integer;
> begin
>   xml := CoFreeThreadedDOMDocument.Create;
>   xml.async := false;
>   xml.load("C:\tests.xml");
>   nl := xml.selectNodes("/INQ/TBODY/ChangeCode/KeyData/KEYLP/Name");
>  for i:=0 to Pred(nl.length) do
>   nl.item[i].text := LabeledEdit1.text;
>   xml.save("C:\tests.xml");
> end;

ну путь расположения tests.xml свой...

у меня файл test.xml полностью пустой становиться....

Кстати, а есть как.-нидь документация по MSXML2_TLB?


 
wal ©   (2006-02-14 16:59) [29]


> xml.load("C:\tests.xml");
if not xml.load("C:\tests.xml") then PByte(0)^:=0;

> Кстати, а есть как.-нидь документация по MSXML2_TLB?
У Микрософта ее дофига


 
umbra ©   (2006-02-14 18:24) [30]

Удалено модератором


 
Сенокур Петя   (2006-02-15 10:37) [31]


> wal ©   (14.02.06 16:59) [29]
>
> > xml.load("C:\tests.xml");
> if not xml.load("C:\tests.xml") then PByte(0)^:=0;


Неаа... Просходит какая-то аварийная ситуация и вываливается окно:

"Project xxxx raised exception class yyyyy with message "zzzzzz".
Process stopped.  Use Step or Run to continue."

Ну и на том спаисибо, буду пытаться дальше думать, а то начинаю комплексовать по поводу того, что слишком много вопросов у меня :)


> У Микрософта ее дофига


Будем искать

ЗЫ: спасиб за участие...


 
wal ©   (2006-02-15 11:22) [32]


> Просходит какая-то аварийная ситуация и вываливается окно:
Что и требовалось доказать. Файл не может быть прочитан. Или его нет, или он кривой или еще что-нибудь.


 
Loginov Dmitry ©   (2006-02-15 11:25) [33]


> wal ©   (07.02.06 15:05) [8]
>
> Создаешь шаблон с пустыми тэгами. Дальше что-то вроде этого:
>
> uses MSXML2_TLB;


А почему, собственно, MSXML2_TLB, а не MSXML_TLB? Имхо, библиотечка с интерфейсом MSXML2_TLB появляется после установки MSOffice. Т.е., если MSOffice не установлен, то некоторые функции, объявленные в MSXML2_TLB могут оказаться недоступными. Притом, MSXML_TLB генерируется на порядок быстрее :)



Страницы: 1 вся ветка

Текущий архив: 2006.03.19;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.054 c
2-1141197033
WChek
2006-03-01 10:10
2006.03.19
Работа с параметрами


15-1140678678
antonn
2006-02-23 10:11
2006.03.19
Рашифровка ника


6-1133973667
Хинт
2005-12-07 19:41
2006.03.19
Отправить пакет


2-1141146173
49 Cent
2006-02-28 20:02
2006.03.19
Вопрос о BDE компонентах


6-1133691903
samalex
2005-12-04 13:25
2006.03.19
Сделать почтовые сообщения по-русски