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

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

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

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


Модератор
Рейтинг канала: 7(671)
Репутация: 468
Сообщения: 9083
Откуда: Кайнозойская эра
Зарегистрирован: 29.09.2003
Пусть лучше название файла, будет в самом коде файла, его и проверяет.
_________________
Misereatur nostri omnipotens Deus et, dimissis peccatis nostris, perducat nos ad vitam aeternam. Amen.
    Добавлено: 16:49 14-05-2015   
M.Hunter
 515 EGP


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

У меня по условию задания нужно проверять само название файла. А проверять только тег <Name> проще чем название файла?
    Добавлено: 16:58 14-05-2015   
Grebomet
 1460 EGP


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

Абсолютно одинаково: if (IsFileNameValid(fileName)) {lalala;}
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 17:24 14-05-2015   
AnrDaemon
 857 EGP


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

Зарегистрирован: 17.10.2004
Тот, кто писал условие, дурак. Так ему и передай. Можешь на меня сослаться.
_________________
Люблю свободный полёт... :)
    Добавлено: 17:24 14-05-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 2(19)
Репутация: 135
Сообщения: 10522
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
M.Hunter :
А проверять только тег <Name> проще чем название файла?

И там и там у тебя строка, которую нужно проверить на формат.

Т.е. делаешь отдельную функцию (IsFileNameValid по Grebomet'y), которой на вход подается строка (имя файла на проверку), а на выходе true/false.

Далее, если тебе нужно проверить имя файла, то берешь это имя (из какого там диалога что пользователь выбирает), скармливаешь функции IsFileNameValid, и реагируешь соответственно.

Потом надо проверить также поле Name в XML. Берешь содержимое поля как строку, отдаешь в ту же функцию, и реагируешь соответственно.
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 22:38 14-05-2015   
SecondShadow
 365 EGP


Рейтинг канала: 6(372)
Репутация: -4
Сообщения: 1454 Заблокирован
Откуда: Бийск. Алтай.
Зарегистрирован: 09.02.2008
AnrDaemon :
Тот, кто писал условие, дурак. Так ему и передай. Можешь на меня сослаться.

С заданием все в порядке.
Есть имя файла и при создании файла именно это имя прописывается в сам файл (структура же показана).

Пример. Нужно проверить не переименовывался ли файл ручками уже после создания, или не пытаются ли вам подсунуть файл с правильным именем, но внутри другой.
_________________
Склероз - классная болезнь, ничего не болит и новости каждый день.
    Добавлено: 23:10 14-05-2015   
AnrDaemon
 857 EGP


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

Зарегистрирован: 17.10.2004
Ещё раз - имени файла может просто НЕ БЫТЬ! Необходимо и достаточно, чтобы внутренняя структура файла соответствовала ожидаемому формату хранения. ВСЁ!
Если соответствует (все ожидаемые теги присуствуют и находятся на нужных местах), данные из файла заносятся в БД, если нет - программа ругается на тупого пользователя и переходит к разбору следующего файла, либо завершает работу, если её покормили с STDIN.
_________________
Люблю свободный полёт... :)
    Добавлено: 23:37 14-05-2015   
Grebomet
 1460 EGP


Модератор
Рейтинг канала: 8(753)
Репутация: 261
Сообщения: 4765
Откуда: Питербурх
Зарегистрирован: 06.01.2003
AnrDaemon :
Ещё раз - имени файла может просто НЕ БЫТЬ!

Ага. В виндовом оконном приложении. Расскажи мне, мил человек, как ты себе это представляешь? А самое главное - зачем ты себе это представляешь? Не надо так больше делать.

В задании ведь явно сказано: есть файлы. У файлы есть имя. Внутри каждого файла его имя дублируется. Зачем оно так, почему оно так, и как бы оно могло бы быть, если бы у бабушки были яйки, а у дедушки выросли сосцы - не забота разработчика.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 00:08 15-05-2015   
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
Реализовал просмотр ДБ и редактирование через DataGrid с помощью такого кода
Код:
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XmlData.FileDBDataSetTableAdapters;

namespace XmlData
{
    class DataProvider
    {
        private static FileDBDataSet fileDataSet;

        public static FileDBDataSet FileDataSet
        {
            get
            {
                if (fileDataSet == null)
                {
                    fileDataSet = new FileDBDataSet();
                }
                return DataProvider.fileDataSet;
            }
        }
    }

    public class XMLDBDataProvider
    {
        private XmlFilesTableAdapter adapter;

        public XMLDBDataProvider()
        {
            FileDBDataSet dataset = DataProvider.FileDataSet;

            adapter = new XmlFilesTableAdapter();
            adapter.Fill(DataProvider.FileDataSet.XmlFiles);
             
            dataset.XmlFiles.XmlFilesRowChanged += new FileDBDataSet.XmlFilesRowChangeEventHandler(XMLRowModified);
            dataset.XmlFiles.XmlFilesRowDeleted += new FileDBDataSet.XmlFilesRowChangeEventHandler(XMLRowModified);
        }

       
        void XMLRowModified(object sender, FileDBDataSet.XmlFilesRowChangeEvent e)
        {
            adapter.Update(DataProvider.FileDataSet.XmlFiles);
        }

        public DataView GetXMLDB()
        {
            return DataProvider.FileDataSet.XmlFiles.DefaultView;
        }

       
    }
}


А это XAML файл
Код:
<Window x:Class="XmlData.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:XmlData"       
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">


    <Window.Resources>
        <ObjectDataProvider x:Key="DataProvider" ObjectType="{x:Type local:XMLDBDataProvider}"/>
        <ObjectDataProvider x:Key="XmlFiles" ObjectInstance="{StaticResource DataProvider}" MethodName="GetXMLDB"/>
        <local:FileDBDataSet x:Key="fileDBDataSet"/>
        <CollectionViewSource x:Key="xmlFilesViewSource" Source="{Binding XmlFiles, Source={StaticResource fileDBDataSet}}"/>
    </Window.Resources>
    <Grid DataContext="{Binding Source={StaticResource XmlFiles }}">
        <DataGrid x:Name="myDataGrid" HorizontalAlignment="Left" Margin="73,39,0,0" VerticalAlignment="Top" Height="148" Width="355" ItemsSource="{Binding}"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="73,246,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click"/>
        <Button Content="Button" HorizontalAlignment="Left" Margin="208,246,0,0" VerticalAlignment="Top" Width="75" Click="Button_Click_1"/>


    </Grid>

</Window>


Проверку имени файла организовал через Regex
Код:
class CheckName
    {
        static string filePath = @"C:\Users\Michael\YandexDisk\Projects\data\абв_1234567890_ак45.xml";
        static string filename = System.IO.Path.GetFileNameWithoutExtension(filePath);

        public void isValid()
        {
            string[] fileSplit = filename.Split('_');
            if ((Regex.IsMatch(fileSplit[0], "^[А-Яа-я]+$") & fileSplit[0].Length <= 100) & (Regex.IsMatch(fileSplit[1], @"^\d{1}$|^\d{10}$|^\d{14,20}$")) & (fileSplit[2].Length <= 7))
            {
                MessageBox.Show("Все ок");
            }
            else MessageBox.Show("Bad");
        }
    }


добавлено спустя 4 минуты:
Теперь думаю как все таки реализовать загрузку xml файла в базу. Хочу при нажати на кнопку открывать файловый диалог, в котором выбирать любой xml файл, после этого проверять название файла и если все ок загружать его в базу.

добавлено спустя 1 минуту:
Прикладываю архив с проектом.

XmlData.zip
 Описание:
 Имя файла:  XmlData.zip
 Размер файла:  1.06 MB
 Скачано:  344 раз(а)


Последний раз редактировалось: M.Hunter (10:01 24-05-2015), всего редактировалось 2 раз(а)
    Добавлено: 10:01 24-05-2015   
Minx
 978 EGP


Модератор
Рейтинг канала: 2(19)
Репутация: 135
Сообщения: 10522
Откуда: Gomel, Belarus
Зарегистрирован: 19.11.2005
Grebomet :
И будет две проблемы: программа и регексп.

И все таки эти две "проблемы" (;
_________________
μηδείς αγεωμέτρητος εισίτω
    Добавлено: 11:55 24-05-2015   
M.Hunter
 515 EGP


Репутация: 44
Сообщения: 2363
Откуда: Казань
Зарегистрирован: 28.03.2002
Minx :
Grebomet :
И будет две проблемы: программа и регексп.

И все таки эти две "проблемы" (;

Да ладно Улыбка Оказалось не слижком сложно, и код занимает намного меньше места. Осталось только присобачить ''ne проверку в нужном месте, пока не знаю как.
    Добавлено: 12:12 24-05-2015   
Grebomet
 1460 EGP


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

Ну, очевидно, когда ты грузишь файл, то вызывешь свою проверку сначала на имени файла, потом на имени, прочитанном из файла.
Читаешь файл, ясенпень, не сразу в базу, а в промежуточный буфер какой-нибудь. Если все проверки прошли - добавляешь данные в БД, если не прошли - кидаешь эксепшен и ловишь его где-нить в там, где начинал грузить файл.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 14:52 25-05-2015   
Железный канал: «C#»
На страницу: Пред.  1, 2 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Если на утро Ваш профиль заблокирован, значит вчера Вы очень хорошо провели время (Squad)

  » C# | страница 2
Каналы: Новости | 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