[РЕШЕНО] Запись/чтение TStringGrid .xml (обсудить)

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

[РЕШЕНО] Запись/чтение TStringGrid .xml (обсудить)

Сообщение Владимир » 28.06.2011 00:10:49

Господа-граждане, всем доброго!
Впервые столкнулся с чтением из файла в TStringGrid - оказалось, все просто до безобразия (а также во время, да и после безобразия). Кидаем на форму StringGrid, заполняем чем надо ячейки и сохраняем - получаем файл .xml. Затем читаем оттуда - все заполняется как надо.
p.s. возможно, гуру посмеются, но для народа может быть полезно!
Последний раз редактировалось Владимир 05.07.2011 22:22:49, всего редактировалось 1 раз.
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение vada » 28.06.2011 09:32:07

Из анабиоза? :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение dunin » 28.06.2011 21:26:07

Владимир писал(а):...
p.s. возможно, гуру посмеются, но для народа может быть полезно!

Спасибо. Не знал.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение Владимир » 28.06.2011 22:25:55

vada писал(а):Из анабиоза? :)

Это шутка такая или хамствие? Надо быть добрее.
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение vada » 29.06.2011 12:41:07

Естественно шутка! :oops:
Кстати, там не все так гладко. Если количество колонок и столбцев в гриде и XML не совпадает...
Зацените что получится.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение Vadim » 29.06.2011 13:07:38

vada писал(а):Если количество колонок и столбцев в гриде и XML не совпадает...

При загрузке есть специальная опция, которая пересоздаёт StringGrid заново, основываясь на XML-файле. Естественно, при выгрузке в файл, нужно её тоже указывать, чтобы в файле были все данные о создании StringGrid'а.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение dunin » 29.06.2011 13:43:22

вот чего подумалось... у разработчиков StringGreed-а не возникало мысли допилить этот генерируемый XML до полного соответствия формату *.ods файла? тогда фактически получился бы готовый компонент для работы с офисными документами. думаю понравилось бы многим.

Добавлено спустя 2 часа 30 минут 54 секунды:
В продолжение темы...
Код: Выделить всё
unit XMLConf;   
...
    {...
    Copyright (c) 1999 - 2005 by Sebastian Guenther, sg@freepascal.org
    Modified in 2007 by Sergei Gorelkin, sergei_gorelkin@mail.ru
    ...}

:roll:
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение Mr.Smart » 29.06.2011 16:40:14

dunin причём тут StringGrid? Сергей правит XML, но никак не сетку!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение dunin » 29.06.2011 18:01:56

Mr.Smart писал(а):dunin причём тут StringGrid? Сергей правит XML, но никак не сетку!

StringGrid сохраняет в файл через компонент XMLConf.
Я бы сам за нужное дело взялся, но, чую, ума не хватит. :|
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение Sergei I. Gorelkin » 29.06.2011 20:18:52

Тут основная проблема в том, что модуль xmlconf работает вовсе не с xml, как бы странно это ни звучало. Xml подразумевает наличие структуры, которую можно каким-то образом описать (например, с помощью схемы или DTD), и которую можно преобразовать в другую произвольную структуру (например, с помощью xslt). С этой точки поддержка ods прямо в гриде лишена смысла: достаточно сохранять самый простой формат и дальше преобразовывать во что угодно с помощью xsl.
Но то, с чем работает xmlconf, структуры не имеет и не может иметь в принципе. И его в общем-то бесполезно допиливать, дешевле выкинуть и лепить нужный dom ручками...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение dunin » 29.06.2011 21:15:45

Sergei I. Gorelkin писал(а):...Xml подразумевает наличие структуры, которую можно каким-то образом описать (например, с помощью схемы или DTD), и которую можно преобразовать в другую произвольную структуру (например, с помощью xslt). С этой точки поддержка ods прямо в гриде лишена смысла: достаточно сохранять самый простой формат и дальше преобразовывать во что угодно с помощью xsl.
Но то, с чем работает xmlconf, структуры не имеет и не может иметь в принципе. И его в общем-то бесполезно допиливать, дешевле выкинуть и лепить нужный dom ручками...

Ну ёпрст... :(
Сергей, подскажите куда фтыкать, чтобы толком понять про DTD, xslt и иже с ними... (линк на толковую литературу или что-то вроде). Спасибо.

==================
Если кто помнит, для дельфи был (или еще есть?) такой компонент ФормулаВан (Formula 1 или F1). Типа кидаешь на форму "грид от F1" - рисуешь там что тебе надо - жмак на кнопель - и готовый эксель файл того, что нарисовал. Дальше через shellexecute его вызываешь и бинго - отчет готов. Под лазарус, и, разумеется Open/LibreOffice, ничего такого не нашел, а очень хотелось бы.
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение Владимир » 29.06.2011 22:07:22

dunin писал(а):
Sergei I. Gorelkin писал(а):..
==================
Если кто помнит, для дельфи был (или еще есть?) такой компонент ФормулаВан (Formula 1 или F1). Типа кидаешь на форму "грид от F1" - рисуешь там что тебе надо - жмак на кнопель - и готовый эксель файл того, что нарисовал. Дальше через shellexecute его вызываешь и бинго - отчет готов. Под лазарус, и, разумеется Open/LibreOffice, ничего такого не нашел, а очень хотелось бы.


Доброго всем! Не думал, что обсуждение продолжится - вроде мелочь. Решаемая сохранением в файл задача у меня самая прозаическая - автосохранение (дабы не терять пользовательские данные на случай падения приложения).
Касаемо .ods или .odt - эти "файлы" суть zip-архивы. После распаковки получаем несколько каталогов и файлов, из которых за наполнение таблицы (шрифты, данные и т.д.) отвечает файл content.xml С помощью replace можно подставить в него свои данные, а затем снова сжать и читать в Open/Libre.
p.s. идея не моя, ссылку где-то здесь на форуме нашел
Владимир
постоялец
 
Сообщения: 355
Зарегистрирован: 23.08.2007 19:48:39
Откуда: Москва

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение Sergei I. Gorelkin » 29.06.2011 22:28:33

dunin писал(а):Сергей, подскажите куда фтыкать, чтобы толком понять про DTD, xslt и иже с ними... (линк на толковую литературу или что-то вроде).

Я что-то затрудняюсь подсказать с ходу. Сам обращался к первоисточникам на w3.org, но там, понятное дело, все по-английски.
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1405
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение vada » 30.06.2011 13:23:58

Sergei I. Gorelkin писал(а):
dunin писал(а):Сергей, подскажите куда фтыкать, чтобы толком понять про DTD, xslt и иже с ними... (линк на толковую литературу или что-то вроде).

Я что-то затрудняюсь подсказать с ходу. Сам обращался к первоисточникам на w3.org, но там, понятное дело, все по-английски.

GOOGLE очень помогает. Там все есть, и xml и dtd и shema и xslt. Все на самом деле довольно просто. Можно и с апачей инглиш почитать даже если только в школе его учил. Сильно поможет translate.google.ru. Переводит сносно для понимания технического текста, да и исходный текст показывает...
Да и книжки на русском есть в магазинах или в инете зваказать.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Запись/чтение TStringGrid .xml (обсудить)

Сообщение dunin » 30.06.2011 15:10:19

vada писал(а):...GOOGLE очень помогает. Там все есть...

Кэп, спасибо. :?
Ни кто ни когда не задумывался, почему при всемогущем гугле, общение на тематических форумах по прежнему живет и процветает? Да потому, что всемогущий гугл и прочие поисковики заставят вас перекидать лопатой кучу сами знаете чего, прежде чем доберетесь до чего-то стоящего. А тематические форумы как правило объединяют людей в данной тематике разбирающихся, которые, возможно ни чем вам не помогут, но и оправлять вас... (куда читайте выше) не будут.
Хотя... мы же не знаем, кто по ту сторону монитора... может школьник, или блондинко какой, впервые узнавший, что есть что-то еще акромя вконтакта и одноклассников. Можно лишний раз и разъяснить что такое поисковая машина и онлайн переводчик... Почему нет?
Но это так, отвлечение... извините за оффтоп...
Аватара пользователя
dunin
энтузиаст
 
Сообщения: 634
Зарегистрирован: 02.05.2007 13:18:11
Откуда: Тољя††и


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru