• Oracle в C#: как узнать количество выбранных строк?

    @Sumor
    ExecuteReader(), возвращающий OracleDataReader, предназначен для последовательного чтения результатов запроса. В процессе работы он не знает сколько ещё данных будет. Более того, данные в Reader могут начать поступать, когда ещё не закончено выполнение запроса на сервере.
    Чтобы получить количество строк нужно либо в цикле прочитать все записи из OracleDataReader. Либо сформировать запрос типа: "Select count(*) from " + command.CommandText. И для него вызвать command.ExecuteScalar(). В результате вы получите количество строк без их передачи на клиент.
    Ответ написан
    Комментировать
  • Как посмотреть данные в БД на удаленном компьютере (MS SQL)?

    @Sumor
    Используя любой дистрибутив MSSQLServer, любой версии и редакции, можно установить только клиентское приложение SQL Server Management Studio.
    В том числе можно использовать бесплатные дистрибутивы MS SQL Server Express.

    MSSQL express 2012

    Про подключение к другому серверу:
    MSDN
    Ответ написан
    Комментировать
  • Как в MS SQL изменить определенные строки?

    @Sumor
    Нет возможности проверить, но примерно можно написать следующий запрос:
    UPDATE Table
    SET
    	fio = SUBSTRING(fio, 1, LEN(fio) - 2) + '.' + SUBSTRING(fio, LEN(fio), 1) + '.'
    WHERE SUBSTRING(fio, LEN(fio) - 3, 1) = ' ' and SUBSTRING(fio, LEN(fio) - 1, 1) = ' '

    Смысл в том, что вы отбираете строки у которых последние 4 символа: пробел + буква + пробел + буква. И вы для таких строк формируете строку с точками.
    Ответ написан
    1 комментарий
  • Как подключиться к Oracle на C#?

    @Sumor
    Первый вариант — по ODBC. Драйвер ODBC.
    Второй вариант через Oracle .net провайдер. Ссылка на MSDN

    Пример из MSDN
    Ответ написан
    Комментировать
  • Использование COM объектов в Windows Service C#?

    @Sumor
    Скорее всего у пользователя, под которым запущен сервис нет прав на создание объекта.
    Если это DCOM, то права можно задать в аплете «Службы компонентов», раздела «Администрирование» Панели инструментов.
    Может так случиться, что создаваемый com-объект требует наличия GUI. Например, использует очередь сообщений, выдаёт диалоги. В этом случае служба, запущенная не от системного пользователя с установленной галочкой «Разрешить взаимодействие с рабочим столом», вероятнее всего не будет работать так как работает обычное приложение.
    Ответ написан
    2 комментария
  • Как приостановить туннелирование события в WPF?

    @Sumor
    В вашем случае лучше использовать сканер в режиме работы com-порта.
    Либо изменить логику программы так, чтобы сканер просто заменял клавиатуру, как это и сделано, например, в торговых точках — там данные можно ввести со сканера, а можно набить руками.

    Что касается введённых символов, то вы их можете все запоминать и все не пропускать, а после того как разберётесь что с ними делать ввод данных можно эмулировать через SendInput. Но этот путь некрасив, ведёт к ошибкам, особенно при использовании спецсимволов или быстрых клавиш.
    Ответ написан
    Комментировать
  • Что означает эта ошибка в С++ ?

    @Sumor
    Действительно можно прогнать статическими анализаторами. Они хорошо отлавливают ситуации, когда идёт обращение к освобождённой памяти. Например:
    CLang analizer
    CppCheck
    PVS-Studio
    Ответ написан
    Комментировать
  • Эмуляция файловой системы в памяти. Как работает Enigma Virtual Box?

    @Sumor
    Прежде чем начать перехватывать вызовы системных функций попробуйте другие способы.
    Можно использовать ram-диск. Если поддерживается URL, то можно организовать виртуальный или реальный веб-сервер. Если используется SQLServer 2012 или выше, то там есть возможность таблицей имитировать файловую систему.

    Если же хочется всё-таки заниматься перехватом, то можно посоветовать, в частности, следующую литературу:
    Классика — Рихтер
    Цикл статей про ассемблер, некоторые из них могут быть полезными для понимания процессов перехвата — Wasm.ru
    В частности, статья про перехват — Система перехвата функций API платформы Win32
    Ответ написан
    2 комментария
  • C# и странная работа regexp?

    @Sumor
    Нумерация группировок не учитывает знак «ИЛИ». Первая группировка всегда первая, а вторая — вторая, не зависимо от того что именно отработало в регулярном выражении.
    Посмотрите на этот код:
    Regex rg = new Regex("a(a)|b(b)");            
    Console.WriteLine(rg.Match("aa"));
    Console.WriteLine(rg.Match("aa").Groups[1].Value);
    Console.WriteLine(rg.Match("bb"));
    Console.WriteLine(rg.Match("bb").Groups[1].Value);
    Console.WriteLine(rg.Match("bb").Groups[2].Value);

    Его вывод:
    aa
    a
    bb
    
    b
    Ответ написан
  • Как в WPF создать кнопку, при наведении на которую, под текстом появилась горизонтальная черта?

    @Sumor
    В качестве промежуточного решения может подойти следующее.
    <Button >            
        <Run>
            <Run.Style>
                <Style TargetType="Run">
                    <Style.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="TextDecorations" Value="Underline" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Run.Style>
            Текст
        </Run>
    </Button>
    Ответ написан
    2 комментария
  • Как заблокировать таблицу в SQL?

    @Sumor
    Прочитай про разные уровни изоляции. Например:
    MSDN SQL server
    MSDN ADO
    Wikipedia
    Ответ написан
    Комментировать
  • Как связать данные из списка с DataGridView с помощью bindingSource.DataSource?

    @Sumor
    С классом и привязкой всё нормально. У вас ошибка в описании отображения в DataGridView. Поэтому нужен Xaml для определения вашей ошибки.
    Ответ написан
    Комментировать
  • Как в операторе [] правильно вернуть указатель на внутренний vector/map?

    @Sumor
    map это по сути словарик и он не допускает двух элементов с одним ключом. Если вы пытаетесь добавить значение с существующим ключом, то в вашем случае оно просто заменяется.
    Возможно вам надо использовать set вместо map.
    Ответ написан
  • Кто может подсказать статью либо книгу, где хорошо описывается статика C#?

    @Sumor
    Собственно всё описано в MSDN
    Статические классы и статические методы класса

    Технически, статические члены класса это члены, которые живут своей жизнью независимо от объектов этого класса. Если весь класс состоит из таких классов, то его можно и нужно также обозначить статическим.
    Пример использований:
    0. static void Main(){}
    1. Реализация шаблона синглтон — поддержка одного объекта на процесс. Можно даже реализовать единственный объект через статический класс, хотя я бы так не делал.
    2. Глобальные параметры объектов. Например, количество созданных объектов или коллекция объектов.
    3. Статический класс, содержащий параметры проекта, константы или глобальные переменные проекта, а также методы верификации, трассировки и тп, не привязанные к конкретному классу.
    4. Методы расширения реализуются через статические методы. см. MSDN
    Ответ написан
    1 комментарий
  • WPF "проглатывает" исключения. Куда копать?

    @Sumor
    Ошибки Binding проглатываются — это действительно фишка WPF. Они пишутся в выход отладчика с описанием ошибки.
    Для отлова ошибок можно использовать событие BindingComplete, примерно, как это описано у Microsoft.
    Пример отлова ошибок Binding.

    Помимо этого есть интересный механизм проверки значений ValidationRule.
    Пример использования ValidationRule
    Ответ написан
    1 комментарий
  • CCheckListBox - из-за чего кракозябры вместо текста?

    @Sumor
    Складывается ощущение, что у вас выставлена кодировка utf-32 (четырёхбайтная), а L"Channel 1" означает utf-16 (двухбайтная).
    Ответ написан
    Комментировать
  • Что это за алгоритм?

    @Sumor
    Нужна дополнительная информация.

    Первое значение повторяется один раз
    000016684862	270391
    000016684862	551062

    Второе значение повторяется 11 раз по два раза и 1 раз три раза
    000015A859D4	107225
    00050091C090	107225
    000015A8B162	117855
    0000163BC57E	117855
    0005008DEFEB	177271
    0000163BEE37	177271
    000015A8E2C9	180954
    000015A83E90	180954
    0000163BB839	190908
    0000163BC9A4	190908
    00050090A2E9	199580
    0000163C08D1	199580
    000015ADA449	229974
    00001667703A	229974
    00050091F9A6		236959
    0005007A2E8F		236959
    0005007A027C	270222
    0000163C262B	270222
    00001648857E	270222
    00050090C005	291448
    0000163BC742	291448
    0005008E2BBE	297563
    000015B523E6	297563
    0005008E53E2	385039
    00050091F990		385039
    Ответ написан
    Комментировать
  • Как создать свой элемент в visual stidio?

    @Sumor
    Для этого вы можете создать UserControl или CustomControl.
    В первом случае вы создаёте UserControl (пользовательский элемент управления) добавляя его к проекту как окно приложения. Настраиваете по сути как часть окна приложения добавляя нужные контролы на него и описывая логику в коде. После компиляции проекта контрол автоматически попадает на панель инструментов.
    Например:
    <UserControl x:Class="WpfApplication3.UserControl1"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" 
                 d:DesignHeight="300" d:DesignWidth="300">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition />
                <RowDefinition />
            </Grid.RowDefinitions>
            <TextBox />
            <ListBox Grid.Row="1" />
        </Grid>
    </UserControl>


    Во втором случае вы как бы наследуетесь от базового контрола и добавляете к тему оформление и немного логики. В меню добавления элементов этот тип называется CustomControl или настраиваемый элемент управления.
    Либо через C#:
    public MyTextBox : TextBox
    {
    
    }


    Либо через Xaml:
    <TextBox x:Class="WpfApplication1.MyTextBox"
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
                 mc:Ignorable="d" >
       
    </TextBox>
    Ответ написан
    Комментировать
  • Как залинковать библиотеку в Visual Studio?

    @Sumor
    Правой кнопкой на проект, меню «свойства». Там вас интересует два параметра.
    1. С/С++ → «Общие» в правом списке свойств нужна первая: «Дополнительные каталоги включаемых файлов» (Additional Include Directories). Укажите путь к папке с файлами *.h из вашей библиотеки. Обычно это папка include.
    2. Компоновщик (Linker) → «Общие» в правом списке «Дополнительные каталоги библиотек» (Additional Library Directories). Укажите путь к папке с файлами *.lib из вашей библиотеки. Обычно это папка Lib.
    После этого можно добавлять #include и использовать функции из библиотеки.
    Ответ написан
    1 комментарий
  • Как реализовать мгновенную фильтрацию DataGrid'a, используя многопоточность (WPF)?

    @Sumor
    Вам не нужно для фильтрации пересобирать коллекцию. Для этого в wpf уже разработаны нужные механизмы.
    В первую очередь нужно коллекцию с которой вы работаете поместить в CollectionView. CollectionView привязать к DataGrid.
    У CollectionView есть встроенные механизмы фильтрации — результат будет отображаться в DataGrid.
    См. Свойство Filter CollectionView.

    Для использования CollectionView обёртывается ещё в CollectionViewSource или что-то подобное. Это подробно описывается в примерах. Его можно просто описать даже в Xaml.
    Пример, примерного кода с динамическим созданием CollectionViewSource над List и фильтрацией через TextBox:
    Xaml
    <Window x:Class="WpfApplication3.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            Title="MainWindow" Height="350" Width="525">    
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="47*"/>
                <RowDefinition Height="275*"/>
            </Grid.RowDefinitions>
            <TextBox x:Name="filter" TextChanged="filter_TextChanged"/>
            <ListBox x:Name="lst" Grid.Row="1" />
        </Grid>
    </Window>


    C#
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            List<string> lstSource = new List<string>() { "1", "2","3" };
            viewSource = new CollectionViewSource();
            viewSource.Source = lstSource;            
            viewSource.Filter += viewSource_Filter;
            lst.ItemsSource = viewSource.View;
        }
    
        CollectionViewSource viewSource;
        void viewSource_Filter(object sender, FilterEventArgs e)
        {
            e.Accepted = ((string)e.Item).IndexOf(filter.Text) >=0;
        }
    
        private void filter_TextChanged(object sender, TextChangedEventArgs e)
        {
            viewSource.View.Refresh();
        }
    }
    Ответ написан
    2 комментария