|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как провести чтение, сортировку и сохранение данных из тестового файла
Регистрация: 12.09.2013
Сообщений: 24
|
||
Просмотров: 9304
|
|
||||
Цитата:
Кто-то мешает научиться?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :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: |
||||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Offtop: опс. опоздал
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 13.09.2013 в 17:45. |
|||
![]() |
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Вся суть этого бесполезного форума - только успешно трепаться языком,
хотя я дал быстрый пример как можно было начать программу, вместо этого наши загуренные болтуны обсуждают мой чахлый набросок, молодца, мои поздравления, сходите еще на ciberforum.ru и объясните там тоже как надо правильно писать, может вам всем слабо заодно поучить народ на stackoverflow.com? |
|||
![]() |
|
||||
КИПиА Регистрация: 21.03.2005
Tyumen
Сообщений: 1,352
![]() |
>>А внутри программы данные и не нужно хранить в формате XML. Внутри программы они десериализуются в объектный код и работа ведётся с объектами, а не с "текстом в формате XML".
Что есть объектный код? объекты и типы данных автора программы или объекты XML? |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Для меня так и осталось загадкой в чем сложность автора - это к вопросу о том для кого этот код - вначале я пытаюсь понять что нужно - а потом уже от степени трудоемкости, рисую код (пример кода) или нет. Быстро написать абы что последует еще 500 вопросов\просьб "а можно-ли" - и Вам это известно не меньше меня. Ну а возникший диалог между мной и hwd хоть и являеться побочным в некоторой степени, но уверен для кого-то и полезный - просто у нас с ним подходы немного разные (у каждого в силу своей испорченности) - но оба вполне жизнеспособные.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Цитата:
Ты выложил код. Я дал по нему аргументированные замечания. Если я не прав - так же аргументированно об этом и пиши. А фразы, типа "загуренные болтуны" и твои "поздравления" - это, в данном случае, ни о чём и более соответствуют уровню школоты (уж извини)... Если я вижу интересный и качественный код - стараюсь брать его на вооружение. Если вижу косяки - сообщаю о них. Кто и как для себя трактует мои замечания - мне фиолетово.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome: |
||||
![]() |
|
||||
Регистрация: 12.09.2013
Сообщений: 24
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 12.09.2013
Сообщений: 24
|
Ладно, программу я написал. Все анализирует, все сохраняет. Но вот проблема:
Когда пытаюсь нарисовать этими данными текст, ну или кривую, у меня ничего в автокаде не отображается. Я добавлю файл, который он анализирует и сам код программы. Подскажите, какой выбрать масштаб в автокаде, чтобы увидеть добавленные примитивы. Если дело в масштабе. Если дело в коде, помогите найти загвоздку. Код:
|
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
В коде у Вас проблема.
Вы взяли пример создания текста в автокаде и сунули его к себе в проект, совершенно не понимая что и как должно работать. Вы даже формат передаваемых данных не смотрели. Ответы на Ваши вопросы: 1. Вы выводите только один текстовый объект из 505 имеющихся в Вашем файле. 2. Вы выводите объект по первым координатам, хотя координат может быть множество (обращаю внимание, что в Вашем файле такого не случается и вероятно делать список координат в описании структуры текста не нужно.). 3. Координаты точки задаются в формате double , а не Decimal (либо меняйте прямо в структуре, либо преобразовывайте при создании текста) 4. Масштаб текста задан в переменной X_SKAL в структуре oTEXT Остальное смотреть лень. Это Ваш текст правильно нанесенный ![]() ЗЫ. Чисто из любопытства, почему Вы используйте и заполняете структуры данных, а потом по списку этих структур создаете объекты, может убрать промежуточное звено и сразу создавать объекты? Последний раз редактировалось Boxa, 18.09.2013 в 11:50. |
|||
![]() |
|
||||
Регистрация: 12.09.2013
Сообщений: 24
|
Назрел такой вопрос:
Если я создам примитив в Автокаде, то можно ли как нибудь сохранить этот примити в код? Ну например я добавлю новую линию - мой dll должен уметь увидеть это и добавить его в список (список свойств должен выглядеть так же, как и файл из которого импортировали весь рисунок). Такое возможно? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
А если примитив будет удаляться?
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Я не понимаю вопроса. Вам кто то запрещает считать параметры объекта в автокаде, заполнит соответствующую этому типу объектов структуру , а потом вывести в текстовый файл? То , откуда он высосан ничего не меняет. Разберитесь с форматом, какое поле, за что отвечает и какие данные хранит.
И прочитайте в конце, концов справку по net api. |
|||
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Какой язык перспективен для инженера-конструктора с условием | 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 |