|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
|
Поиск в этой теме |
![]() |
#1 | |
Как провести чтение, сортировку и сохранение данных из тестового файла
Регистрация: 12.09.2013
Сообщений: 24
|
||
Просмотров: 9370
|
|
||||
Цитата:
Кто-то мешает научиться?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Я 8 раз прочитав так и не понял, что у тебя вызывает затруднения.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
@h6784rfg6,
Я пока воздержусь от продолжительных матов в адрес автора обозначенного формата... Во всяком случае до того времени, как ты ответишь на вопрос #7. Так же интересует, что помешало автору формата воспользоваться DXF или XML?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Цитата:
Теперь по поводу твоего вопроса: Насколько я тебя понял, ты хочешь редактировать обозначенный файл, добавляя в него новые "элементы", а не вычерчивать на его основе что-то в AutoCAD. Работать непосредственно с тем гуаном, которое тебе прислали - не советую, лучше преобразовать данные в удобоваримый "стандартный" формат и работать с ними, после чего результат обратно превращать в гуано. Парсить этот "формат" очень просто: построчно считываешь текст и анализируешь на наличие ">" или "=". Результат преобразуешь в объектную модель LINQ to XML и жанглируешь им так, как тебе нужно: добавляешь\удаляешь элементы XElement и XAttribute, меняешь их местами и т.п. (чего душе угодно). Затем, когда создашь нужную тебе структуру, выполняй обратное действо: из XML данные записываешь в твой "формат". Всё просто до безобразия, однако если бы у автора "формата" руки росли не из ж@пы, то тебе не пришлось бы заниматься ненужным парсингом и переформатированием, т.к. ты сразу работал бы непосредственно с XML, средствами обозначенной мною выше .net технологии (или любой другой, предназначенной для работы с XML). P.S. Кодом из #4 увлекаться не рекомендую, в виду наличия в нём изрядного количества ошибок (да и вообще там какая-то муть написана). Сразу же, что бросилось в глаза: 1. Утечка памяти в виду не освобождения ранее взятых ресурсов, т.е. отсутствие следующих вызовов: Код:
2. Отсутствие обработки пустых строк, коих в файле предостаточно, в виду чего в список попадает большое количество ненужных "пустышек". 3. Это полнейшая муть: Код:
4. В коде нет обработки, отделяющей имя свойства от его значения. 5. В основе всего должно лежать логическое обоснование: я не знаю, с какой целью автор разместил табуляцию в коде: Код:
6. Нахрена там вообще список списков (вопрос риторический)? Тот же самый результат, предоставленный автором кода, можно получить ограничившись и всего лишь одним списком. Я ещё понимаю, если бы каждый набор записей был записан в виде записи словаря, т.е. однозначно идентифицирован, дабы можно было работать с конкретной, чётко определённой группой записей. Однако то, что по факту сделано в коде #4 - это муть.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 13.09.2013 в 15:31. Причина: добавил комментарии о качестве кода из #4 |
||||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
В этом файле не все объекты автокадовские, поэтому экспортировать все, не так-то просто. Так что готовьте вазелин.
а алгоритм прост: Создаете класс, который будет обрабатывать файл. Создаете в классе контейнер-блок, в который будете скидывать примитивы. Создайте класс, преобразующий примитивы из файла в примитивы автокада Создаете функции ввода вывода Теперь само чтение: Вначале создаем экземпляр конвертера Читаем построчно файл, пока не нашли определение примитива, попутно записывая инфу в отдельные свойства. Читаем построчно примитив пока не нашли другой. Преобразуем примитив файла в примитив акада, если успешно, то добавляем его в блок Чистим конвертер Читаем следующий примитив и так до конца файла вывод - самое простое, просто вставляем наш блок в чертеж |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
з.ы. хотя тут я не учел что это VB... - а там с "жонглированием" и описанием формата может оказаться неважно.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
"Близость\Дальность" к XML здесь роли не играет. Любые данные можно с лёгкостью представить в формате XML (даже двоичные). "Лишнее звено" в данном случае используется для того, чтобы имеющиеся данные можно было бы обрабатывать ПРИВЫЧНЫМИ, "родными" способами (в данном случае LINQ to XML). XML для того и задумывался, чтобы его использовали как УНИВЕРСАЛЬНЫЙ формат хранения\передачи данных. Под этот формат написано много библиотек\технологий. Соответственно, если знаешь хотя бы одну из них, то и не будет нужды изучать "правила жонглирования" сотен вот таких вот "продуманных" приложений.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Я не уверен (а сказать более сильно сомневаюсь - по крайней мере о таких новшествах не слышал) что он поддерживает создание структур данных произвольного формата с обработкой их как "родных".
Цитата:
Цитата:
Цитата:
Например есть у Вас двоичные данные которые проиндексированны в виде упорядоченного дерева - вы их тоже предложите перевести в XML и жонглировать "стандартными" средставми - нет - если и сохраните (например для переноса куда-либо) в формат XML, то уж поиск-то по дереву точно "соорудите" сами (иначе эффективность его упадет логарифмически) - и возникает вопрос в целесообразности перевода таких данных в XML (один черт придеться писать свои методы которые вызывают тот-же LINQ). Пример в другую крайность - может "его" формат представляет все то-же самое но в другой кодировке + еще пару бантиков - мы этого не знаем - по сему и инструмент надо выбирать по наковальне. з.ы. я не в коем случае не утверждаю, что XML в варианте автора не подойдет - я про то, что ненужно сразу не подумав пихать "универсальные форматы".
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 13.09.2013 в 16:38. |
|||
![]() |
|
||||
Цитата:
100% Это вряд ли, т.к. и на XML можно написать компактный по объёму контент. Цитата:
Здесь вопрос не столько в "универсальности формата", сколько в "универсальности обработки". Обрабатывать структурированные текстовые данные гораздо удобней тем же LINQ to XML, чем построчно читать текст из потока (stream) и затем выполнять парсинг полученного контента, а потом ещё и заниматься внесением изменений в эти данные, вставляя строки между уже имеющимися, изменяя существующие записи, удаляя лишние и т.п. В данном случае, заочное приведение данных (в памяти) подобно приведению дробей к единому знаменателю, чтобы получить возможность выполнения сложения. Только в нашем случае мы получаем не возможность сложения, а гибкую возможность модификации\аналитики данных без необходимости написания кучи дополнительного кода, за счёт того, что воспользуемся уже имеющимися технологиями. P.S. Если всё ещё не понятно о чём я говорю, то можно сделать простое сравнение: ты напиши свой вариант кода, позволяющего модифицировать данные, выше выложенные автором, а я свой. Затем совместно и оценим объём кода и удобство обработки данных с промежуточной конвертацией в XML и без неё, на конкретных примерах кода. Т.к. автор уже слился с темы (посматривает, но ничего не пишет), то кодом лучше будет обменяться через скайп и там же обсудить результаты, т.к. помогать в решении, видя исходники автора и конкретные проблемные моменты в его коде - это одно, а собственно решать за кого-то - это другое (второй вариант мне претит, да и без меня найдутся те, кто с низкого старта рванутся за него всё делать).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: Последний раз редактировалось hwd, 13.09.2013 в 17:27. Причина: добавил P.S. |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Мужики успокойтесь....
Ему уже дали ответ....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>а потом ещё и заниматься внесением изменений в эти данные, вставляя строки между уже имеющимися, изменяя существующие записи, удаляя лишние и т.п.
Надо различать форматы хранения данных и форматы в которых они обрабатываются внутри программы или автокад открыв dxf тоже вставляет строки между имеющимися? Да в xml удобно сохранить (но удобство не в формате, а в том что вокруг него уже написана вся необходимая инфраструктура) какието данные, но это незначит что внутри программы этиже данные обязательно оправдано хранить в нем. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Код:
MyNode("Root",["version","1.0";"encoding","utf8"],[MyNode("Tree1",[],[Val("1","Раз");Val("2","Два")]);MyNode("tree2",[],[Val("3","ТРИ")])]);; вернет: val it : MyXml = MyNode ("Root",[("version", "1.0"); ("encoding", "utf8")], [MyNode ("Tree1",[],[Val ("1","Раз"); Val ("2","Два")]); MyNode ("tree2",[],[Val ("3","ТРИ")])]) Это уже совсем далеко от темы - но в общем парситься после такого представления она (структура) штатными средствами ничуть не хуже чем xml LINQ - хотя конечно если LINQ окажеться за глаза то переписывать его никакого смысла нет. тут ключевое не двоичные или текстовые данные - а индексированные - при переносе их в XML для поиска по индексу LINQ не поможет (оно про то что они индексированны не знает - а чтоб ему это объяснить надо чуток попрогромировать сверх его "родного" функционала.) Цитата:
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
Цитата:
А внутри программы данные и не нужно хранить в формате XML. Внутри программы они десериализуются в объектный код и работа ведётся с объектами, а не с "текстом в формате XML".
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Какой язык перспективен для инженера-конструктора с условием | The_Mercy_Seat | Программирование | 705 | 17.03.2021 14:19 |
MS Word Нужен скрипт для копирования с одновременной заменой части текста | Солидворкер | Прочее. Программное обеспечение | 27 | 27.11.2012 15:52 |
структурированный список | Holon | Программирование | 22 | 11.09.2007 14:09 |
чтение данных из файла | Александер | Программирование | 6 | 08.09.2005 10:24 |