Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » C# | страница 1
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 1 из 2
На страницу: 1, 2  След. | Все страницы
Поиск в этой теме:
Железный канал: «C#»
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
Всем привет, знаю что место не самое подходящее для такого поста, но решил все таки попробовать Улыбка Мне нужно написать приложение для работы с xml и с MSSQL, которое умеет:
выбирать файл и проверять имя файла на соответствие формату, загружать данные из файла в БД, отображать и редактировать данные в БД, сохранять в файл из БД, вести логгирование действий.

Структура файла XML:
<File FileVersion=«Версия файла»>
<Name>Наименование файла </Name>
<DateTime>Дата изменения</DateTime>
</File>

Имя файла имеет формат «XX_YY_ZZ.xml», где:
​ XX – набор русских букв. Количество символов - не более 100;
​ YY – набор цифр. Количество символов – либо 1, либо 10, либо от 14 до 20;
​ ZZ – любые символы. Количество символов – не более 7.

Как лучше это все релизовать? Я создал приложение WPF, базу данных, сейчас читаю про LINQ, но как это все объединить смутно представляю. И как лучше проверять соответствие названия файла формату? Буду благодарен за любую помощь Улыбка
    Добавлено: 19:45 12-05-2015   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
M.Hunter :
И как лучше проверять соответствие названия файла формату?

Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем
_________________
Люблю свободный полёт... :)
    Добавлено: 20:04 12-05-2015   
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
AnrDaemon :
M.Hunter :
И как лучше проверять соответствие названия файла формату?

Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем

Что-то не понимаю как это будет работать, можно описать в общих чертах?
    Добавлено: 15:40 13-05-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 2(19)
Репутация: 135
Сообщения: 10521
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
AnrDaemon :
Лучше никак не проверять.

Ему же название проверить нужно, а не читаемость с носителя.

добавлено спустя 1 минуту:
M.Hunter :
И как лучше проверять соответствие названия файла формату?

Если владеете, то regexp.

Если не владеете, то программно, ручками (разбить по _ на составляющие, проверить части на требуемые свойства и т.д.).
_________________
μηδείς αγεωμέτρητος εισίτω

Последний раз редактировалось: Minx (15:53 13-05-2015), всего редактировалось 1 раз
    Добавлено: 15:53 13-05-2015   
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(753)
Репутация: 261
Сообщения: 4765
Откуда: Питербурх
Зарегистрирован: 06.01.2003
Что-то я не понял, что оно из файлов грузит. Дату, что ли? Или имя файла тоже информацию ценную несет?
А то имя, которое <Name>, оно должно совпадать с именем файла, или не должно?

M.Hunter :
И как лучше проверять соответствие названия файла формату?

Порезал строку по подчеркиваниям (String.Split) - проверил, что получилось ровно три куска.
Первый кусок проверяй на духовность сначала по длине (не более 100). Затем String.ToUpper + String.ToCharArray() + цикл for по всем буквам, и проверяй, что каждая буква входит в строку "АБВГДЕЁ..." (String("БУКВЫ").IndexOf(символ) >= 0).
Второй кусок проверяй на скрепы аналогичным образом, только тут легче: в верхний регистр переводить не надо, а для проверки цифр есть Char.IsDigit().
Третий кусок просто по длине проверил - и усё.

добавлено спустя 2 минуты:
Minx :
Если владеете, то regexp.

И будет две проблемы: программа и регексп. Улыбка

Кстати, а в цешарпе регекспы умеют с юникодом работать?
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.

Последний раз редактировалось: Grebomet (16:14 13-05-2015), всего редактировалось 1 раз
    Добавлено: 16:14 13-05-2015   
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
Grebomet :
Что-то я не понял, что оно из файлов грузит. Дату, что ли? Или имя файла тоже информацию ценную несет?
А то имя, которое <Name>, оно должно совпадать с именем файла, или не должно?

<Name> совпадает с названием файла. А проверять на корректность нужно только название файла в сооветствии с этим форматом:
Имя файла имеет формат «XX_YY_ZZ.xml», где:
​ XX – набор русских букв. Количество символов - не более 100;
​ YY – набор цифр. Количество символов – либо 1, либо 10, либо от 14 до 20;
​ ZZ – любые символы. Количество символов – не более 7.

добавлено спустя 3 минуты:
Grebomet :
Порезал строку по подчеркиваниям (String.Split) - проверил, что получилось ровно три куска.
Первый кусок проверяй на духовность сначала по длине (не более 100). Затем String.ToUpper + String.ToCharArray() + цикл for по всем буквам, и проверяй, что каждая буква входит в строку "АБВГДЕЁ..." (String("БУКВЫ").IndexOf(символ) >= 0).
Второй кусок проверяй на скрепы аналогичным образом, только тут легче: в верхний регистр переводить не надо, а для проверки цифр есть Char.IsDigit().
Третий кусок просто по длине проверил - и усё.

Спасибо, так думаю смогу реализовать Улыбка А вообще по поводу переноса XML в SQL и обратно, с помощью LINQ это можно будет реализовать? Или есть проще варианты?

Последний раз редактировалось: M.Hunter (17:08 13-05-2015), всего редактировалось 1 раз
    Добавлено: 17:08 13-05-2015   
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(753)
Репутация: 261
Сообщения: 4765
Откуда: Питербурх
Зарегистрирован: 06.01.2003
M.Hunter :
А вообще по поводу переноса XML в SQL и обратно, с помощью LINQ это можно будет реализовать? Или есть проще варианты?

Да хто ж его знает - я в сишарпе не силен. Я б вообще по старинке запросы через какую-нибудь датабазную абстракцию наклепал. Благо у тебя там, похоже, все в одной таблице уместится, так что ничего особо сложного не предвидится.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 18:09 13-05-2015   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
Minx :
AnrDaemon :
Лучше никак не проверять.

Ему же название проверить нужно, а не читаемость с носителя.

При чём тут читаемость с носителя?…
_________________
Люблю свободный полёт... :)
    Добавлено: 20:26 13-05-2015   
AVE
 298 EGP


Рейтинг канала: 5(218)
Репутация: 41
Сообщения: 1418
Откуда: Йошкар-Ола
Зарегистрирован: 16.09.2004
Все правильно AnrDaemon говорит. Никаких проверок строк, никаких регекспов, боже упаси. Проверил название файла, скормил XmlTextReader'у (или XMLDocument'у), если тот ругнулся - файл некорректен. Вишенкой на торте будет проверка сущностей (через xpath, например, в случае XMLDocument, или в цикле для XmlTextReader) по уже распарсенному, если не соответствует (т.е. другой хмл подсунули) - тоже посылать.

Последний раз редактировалось: AVE (23:23 13-05-2015), всего редактировалось 1 раз
    Добавлено: 23:20 13-05-2015   
Diff
 708 EGP


Модератор
Рейтинг канала: 8(861)
Репутация: 44
Сообщения: 4179
Откуда: Сферическая Земля в вакууме.
Зарегистрирован: 04.07.2003
Этот неловкий момент, когда люди, немогущие прочитать и понять вопрос, учат как надо парсить... Улыбка
_________________
Конец света в конце тоннеля
    Добавлено: 02:12 14-05-2015   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
Мы прочитали и поняли вопрос. Он поставлен некорректно.
Программе должно быть пофигу, какое у файла имя. Формат совпадает? Чего тебе ЕЩЁ надо? Не совпадает? Пошёл в жопу, переходим к следующему файлу.
_________________
Люблю свободный полёт... :)
    Добавлено: 02:52 14-05-2015   
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
AnrDaemon :
Мы прочитали и поняли вопрос. Он поставлен некорректно.
Программе должно быть пофигу, какое у файла имя. Формат совпадает? Чего тебе ЕЩЁ надо? Не совпадает? Пошёл в жопу, переходим к следующему файлу.

Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?
    Добавлено: 04:44 14-05-2015   
Garold
 165 EGP


Репутация: 9
Сообщения: 510
Откуда: Kusari
Зарегистрирован: 01.08.2012
Если вдруг дружишь с PHP, то посмотри здесь http://www.pluxml.org/ . Готовый вариант. Придется поначалу поковыряться в чужом коде немало, но там уже все отлажено и оптимизировано. Правда придется еще и выучить французский.
_________________
Вопрос: если ты в глубочайшей "жопе"(по жизни), но с фонариком, можно-ли назвать такой путь светлым?
    Добавлено: 08:47 14-05-2015   
Diff
 708 EGP


Модератор
Рейтинг канала: 8(861)
Репутация: 44
Сообщения: 4179
Откуда: Сферическая Земля в вакууме.
Зарегистрирован: 04.07.2003
AnrDaemon :
Мы прочитали и поняли вопрос. Он поставлен некорректно.

Однако Минксу и Грибоеду хватило телепатических способностей ответить именно про то, про что спрашивал автор.

AnrDaemon :
Программе должно быть пофигу, какое у файла имя. Формат совпадает?

В данном случае имя - это поле в XML, а формат - шаблон для этого имени, про проверку которого и задан вопрос. А не соответствие файла формату XML про которое вы твердите.
_________________
Конец света в конце тоннеля
    Добавлено: 12:50 14-05-2015   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
M.Hunter :
Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?

Какое "сначала" может быть до того, как ты начал читать файл? Сам то себя слышишь?
_________________
Люблю свободный полёт... :)
    Добавлено: 16:11 14-05-2015   
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
AnrDaemon :
M.Hunter :
Правильно, но сначала ведь нужно как-то определить совпадает формат или нет?

Какое "сначала" может быть до того, как ты начал читать файл? Сам то себя слышишь?

Я в интерфейсе (Win Forms или WPF) выбираю файл XX_YY_ZZ.xml и нажимаю кнопку "Загрузить файл в базу", после этого запускается проверка на то, чтобы название файла XX_YY_ZZ.xml соответствовало формату:
 XX – набор русских букв. Количество символов - не более 100;
 YY – набор цифр. Количество символов – либо 1, либо 10, либо от 14 до 20;
 ZZ – любые символы. Количество символов – не более 7.
Если проверка не проходит, то появляется сообщение "Название файла не соответствует формату", если проверка успешна, то дальше происходит обработка xml файла и загрузка данных из него в таблицу базы данных. В базе можно редактировать таблицу, дальше, соответственно, я хочу реализовать обратный процесс выгрузки данных из таблицы в xml файл. Для специалиста это все элементарно, а я вот голову пока ломаю Улыбка Хотя многие вещи уже подсказали, спасибо.

Похоже мы просто немного о разных вещах говорим, постарался объяснить чего я хочу добиться от программы.
    Добавлено: 16:34 14-05-2015   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
Не надо проверять название файла. Оно никакого отношения к формату файла не имеет. Да его вообще может не быть, если тебе поток с STDIN кормят.
_________________
Люблю свободный полёт... :)
    Добавлено: 16:40 14-05-2015   
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
AnrDaemon :
Лучше никак не проверять.
try
...пытаемся прочесть файл
except(bad_format)
...пропускаем
______________

Здесь я кажется понял, про что ты говорил. Такой код будет проверять файл на соответствие формату xml:
Код:
try
            {
                XDocument testXML = XDocument.Load(filePath);
               
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }

Но мне-то нужно сначала проверить само название файла на соответствие формату, такую проверку нужно будет провести перед чтением файла.
    Добавлено: 16:42 14-05-2015   
AnrDaemon
 857 EGP


Модератор
Рейтинг канала: 8(784)
Репутация: 37
Сообщения: 12292

Зарегистрирован: 17.10.2004
Ещё раз - не надо тебе проверять название файла! Просто не делай этого! Выкинь этот код.
_________________
Люблю свободный полёт... :)
    Добавлено: 16:43 14-05-2015   
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
AnrDaemon :
Не надо проверять название файла. Оно никакого отношения к формату файла не имеет.

Ну мне же по условию задания нужно его проверять Улыбка
    Добавлено: 16:45 14-05-2015   
Железный канал: «C#»
На страницу: 1, 2  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Я всегда подозревал, что у меня в голове чего-то не хватает. Благодаря хирургии я теперь знаю точно, чего именно. (Pastor Schlagge)

  » C# | страница 1
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18