Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Kritt
1 / 1 / 2
Регистрация: 18.01.2013
Сообщений: 65

Данные из grid записать в xml, предусмотреть обратную операцию

30.07.2014, 12:38. Показов 1294. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!
Я начинаю изучать с++ решил написать телефонный справочник, столкнулся с проблемой работы xml не могу найти ни где как загружать туда данные и брать обратно, друзья подсказали попробовать grid(ом) но я так и не смог разобраться. Может тут мне кто нибудь покажет пример использования grid и xml. Заранее большое спасибо, и если что прошу прощение за свои скудные знания
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.07.2014, 12:38
Ответы с готовыми решениями:

Данные из Grid записать в listbox
Доброго времени суток, Подскажите: из grid'a нужно добавить элементы по 2ому клику в listbox(это легко), а как сделать, чтобы количество...

Какой программой можно произвести побитово операцию обратную XOR?
Есть программа WinHex которая позволяет работать с информацией побитово. Например можно провести с каждым битом операцию XOR #AA У...

Записать данные в XML
Здравствуйте. Нужно программно записать данные в XML файл имеющий структуру: <registry xmlns="urn:sample"> <entry...

6
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,896
Записей в блоге: 11
30.07.2014, 12:49
XML прекрасно подключается к DbGrid-у через компонент TClientDataSet.
2
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
30.07.2014, 13:51
Вот функция сохранения строк в xml, если вдруг пригодиться

C++
1
2
3
4
#include <msxmldom.hpp>
#include <XMLDoc.hpp>
#include <xmldom.hpp>
#include <XMLIntf.hpp>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void xml_file(TStringList * OUT_SL, String save_path, String file_name) {
    TXMLDocument * XMLFile = new TXMLDocument(NULL);
 
    try {
        XMLFile->Active = true;
        XMLFile->Encoding = "UTF-16";
        XMLFile->Options = XMLFile->Options << doNodeAutoIndent;
 
        _di_IXMLNode nodElement = XMLFile->CreateElement(L"translate", L"");
        XMLFile->ChildNodes->Add(nodElement);
        for (int i = 0; i < OUT_SL->Count; i++) {
            IXMLNode *nodNew = XMLFile->ChildNodes->Last()->AddChild(L"string");
            nodNew->SetAttribute("id", IntToStr(i + 1));
            nodNew->SetAttribute("text", OUT_SL->Strings[i]);
        }
 
        XMLFile->SaveToFile(save_path + file_name + ".xml");
 
    }
    catch (const Exception & e) {
        ShowMessage(e.Message);
    }
        delete XMLFile;
}
в файле получаем это
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<translate>
  <string id="1" text="select SP.* FROM SPARES SP WHERE (SP.DELETED&lt;100) AND (SP.ID IN ( )) AND  (SP.ID NOT IN  (SELECT CC.SPARES_ID FROM CARCATALOG CC WHERE (CC.DELETED&lt;100) AND (SP.ID=CC.SPARES_ID) AND  (CC.ID IN  (SELECT C_C.CAT2_ID FROM CATALOG_CATALOG C_C WHERE (DELETED&lt;100) AND (C_C.CAT1_ID= ))))) "/>
  <string id="2" text="ID "/>
  <string id="3" text="test7 test8 "/>
  <string id="4" text="test5 test6 "/>
  <string id="5" text="test9 "/>
  <string id="6" text="test10 "/>
  <string id="7" text="test11 test12 test13 "/>
  <string id="8" text="test14 test15 "/>
  <string id="9" text="test16 test17 "/>
  <string id="10" text="test18 test20 test21 "/>
  <string id="11" text="select SP.* FROM SPARES SP WHERE (SP.DELETED&lt;100) AND (SP.ID IN ( )) AND  (SP.ID NOT IN  (SELECT CC.SPARES_ID FROM CARCATALOG CC WHERE (CC.DELETED&lt;100) AND (SP.ID=CC.SPARES_ID) AND  (CC.ID IN  (SELECT C_C.CAT2_ID FROM CATALOG_CATALOG C_C WHERE (DELETED&lt;100) AND (C_C.CAT1_ID= )))))"/>
  <string id="12" text="ID"/>
  <string id="13" text="tes+t7 te;st8"/>
  <string id="14" text="test5 test6"/>
  <string id="15" text="test9"/>
  <string id="16" text="test10"/>
  <string id="17" text="test11 test12 test13"/>
  <string id="18" text="test14 test15"/>
  <string id="19" text="test16 test17"/>
  <string id="20" text="test18 test20 test21"/>
</translate>
Но вообще штука эта очень тормозная и как раз UI предложил вариант использовать обычный StringList
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void my_xml_file(TStringList *OUT_SL, String save_path, String file_name)
{
    TStringList *XML = new TStringList;
    XML->Add("<?xml version=\"1.0\" encoding=\"UTF-16\"?>");
    XML->Add("<translate>");
    for (int i = 0; i < OUT_SL->Count; i++)
    {
        XML->Add(String().sprintf(L"  <string id=\"%d\" text=\"%s\"/>", i + 1, OUT_SL->Strings[i]));
    }
    XML->Add("</translate>");
    XML->SaveToFile(save_path + file_name + ".xml", TEncoding::Unicode);
    delete XML;
}
Возможно чем то помог. Если у тебя вдруг StringGrid а не DbGrid
1
 Аватар для Kritt
1 / 1 / 2
Регистрация: 18.01.2013
Сообщений: 65
30.07.2014, 14:39  [ТС]
У меня TDBGrid Но я думаю мне помогут ваши советы. До дому доберусь попробую, большое спасибо за помощь!
0
74 / 54 / 17
Регистрация: 10.07.2014
Сообщений: 329
31.07.2014, 18:00
DeadHipo, у меня был как то глюк, что если данных больше чем 3 МБ, то TXMLDocument генерил эксепшн "Out of memory". Не встречал?
Kritt, уверен что без xml обойтись нельзя?
Всё таки сверхизбыточность данного формата излишняя имхо
0
 Аватар для DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
31.07.2014, 18:05
krv, у меня собирался по на 9.5 мб за 7 минут и дико зависал. TXMLDocument, лагучий какой то. Поэтому использовал StringList
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
31.07.2014, 23:40
Лучше сразу взять БД, например Access
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.07.2014, 23:40
Помогаю со студенческими работами здесь

Записать определенные данные из XML в ComboBox
Всем доброго дня! Подскажите, пожалуйста, как из такого XML в combobox1 запихнуть все &quot;name&quot;? Как правильно пробежаться циклом,...

Данные из Datagridview записать в xml файл
Подскажите как в xml файл вывести??? Спасибо private void button2_Click(object sender, EventArgs e) { ...

Получить данные из XML и записать в БД MySQL
Здраствуйте, скрипт должен брать данные из XML и записывать в mysql: &lt;?xml version=&quot;1.0&quot;?&gt; &lt;dataset&gt; &lt;dataset&gt; ...

Записать данные из XML файла в list<>
Не выводит данные в ListView. Есть подозрения что в первом foreach не правильно написал var list = new...

Как записать данные из XML файла в ListView
Привет. у меня проблема. не могу записать(прочитать и в нужное место записать) данные из XML файла в нужные столбцы и строки в ListViewю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru