Обновилась программа «Учет времени»

Обновленная версия успешно работает как под x86, так и под x64 операционные системы Windows. Также были исправлены мелкие ошибки, которые касались интерфейса.
Номер последней версии 1.2.

Популярность: 3%

мониторинг серверов cs 1.6
Новости, Проекты

C#. Копирование больших файлов

Известно, что в .NET для копирования файлов программистами используется метод Copy, класса File. В большинстве случаев вариант использования File.Copy оправдывает себя. Не нужно ни о чем беспокоиться, достаточно только передать путь к исходному и целевому файлу — система сама все проконтролирует: считает информацию из исходного файла, создаст новый и запишет его. При этом разработчик никак не может повлиять на процесс копирования — прервать его, поставить на паузу. Еще одна проблема возникает при копировании файлов большого размера. Если это выполнять через метод Copy и не в отдельном потоке, то ваше приложении будет в зависшем состоянии, пока процесс копирование не завершиться. Для решения этих проблем я написал класс, который побайтно копирует файл и в процессе передает данные приложению. Весь процесс работает исключительно на родных функциях библиотеки .NET, поэтому функций WIN API вы здесь не найдете.

Также, в этой статье мы разберем как работать с объектами класса FileStream.

Давайте разберем структуру класса.

Читать далее »

Популярность: 15%

C#

C# для начинающих. Использование метода String.Format

В библиотеке .NET очень хорошо реализована работа со строками. Такие классы как StringBuilder и String существенно облегчают жизнь простому программисту. Одной очень важной функцией класса String, является функция Format. Эта функция аналогична функции sprintf из языка C++. Суть функции заключается в том, чтобы сформировать строку из нескольких составляющих и с определенным форматированием. В качестве составляющих могут выступать типы строк, различные форматы чисел, даты и перечисления. Визуально, код, написанный с помощью метода Format, читается легче. Библиотека .NET предоставляет программисту довольно большой выбор типов форматирования. Давайте вкратце познакомимся с принципом использования метода Format, а в конце статьи я приведу сводную таблицу всех типов форматирования.

Читать далее »

Популярность: 32%

C#

C#. Переключение языка ввода. Разбираем класс InputLanguage

В библиотеке .NET для работы с языком ввода существует класс InputLanguage. Ранее, при разработке программ под Win32 для переключения, загрузки и определения языка ввода использовались WINAPI-функции типа GetKeyboardLayout, LoadKeyboardLayout и ActivateKeyboardLayout, а также некоторые другие. На сегодняшний день разработчики под .NET могут не заморачиваться с использованием функций WINAPI. Давайте подробнее рассмотрим класс InputLanguage и определим чего в нем все таки не хватает для полного боекомплекта.

Класс InputLanguage

Итак, описываемый класс находится в сборке System.Windows.Forms, не поддерживает наследование (описан с модификатором sealed). Поля, которые необходимы для установки, определения и переключения языка ввода, статические. В самом объекте, основанного на классе InputLanguage, хранится характеристика какого-либо языка.

Читать далее »

Популярность: 10%

C#

Сборщик PDF. Перезагрузка

Переупаковал Сборщик PDF с для поддержки PDFCreator версии 1.2.

Для полноценной работы Сборщик PDF, требуется:

Если кто-то ставил программу с офисов версии выше 2003, прошу отписаться в комментариях о результатах работы Сборщик PDF.

Сборщик PDF — программа для пакетной обработки PDF-файлов.

Популярность: 3%

Новости, Проекты

C#. Простой пример использования логирования log4net

Эта статья для тех, кто хочет быстро начать использовать логирование в своих программах. В доступной форме рассмотрим подключение и использования библиотеки для ведения логов — log4net. Я не буду расписывать достоинства и недостатки данного логгера. Просто хочу привести пример, который подтолкнет новичков на использование логирования при разработке своих программ. Логирование будет вестись просто в текстовый файл. Если у вас уже есть какой-то проект, то все настройки вы можете проводить в нем. Все остальные, могут создать новый проект — так поступлю я, и начать использовать логирование. Скачиваем последнюю версию библиотеки по следующему адресу. Распаковываем…


Читать далее »

Популярность: 23%

C#

C#. Как определить состояние подключения к интернету

В библиотеке .NET нет функции для проверки состояния подключения к интернету. Для проверки состояния и получения некоторых настроек можно использовать функцию InternetGetConnectedState из библиотеки WINAPI. Эту функцию можно использовать для различных протоколов, типа: Gopher, FTP и HTTP. В использовании InternetGetConnectedState нет ничего сложного. Эта функция импортируется из библиотеки WININET и после использования возвращает True или False, при этом в заданную переменную записывается значение, которое впоследствии сравнивается с константами.

Функция позволяет определять посредством чего выполнено подключение к интернету (модем или LAN), используется ли proxy и установлен ли RAS(Remote Access Service).

Читать далее »

Популярность: 10%

C#

C#. Асинхронный вызов метода используя шаблоны Polling и Callback

В предыдущей статье, Асинхронный вызов метода используя делегат BeginInvoke и шаблон EndInvoke, мы рассмотрели несколько способов использования асинхронного вызова с помощью делегатов. Также, разобрали, что асинхронно вызвать метод можно четырьмя способами используя BeginInvoke() и EndInvoke() класса Delegate. Эти четыре способа используют шаблоны EndInvoke, WaitHandle, Polling и Callback.

В этой статье мы рассмотрим как можно асинхронно вызвать метод используя шаблон Polling и Callback. Прочтите предыдущую статью, чтобы понять, как работают методы BeginInvoke() и EndInvoke(). Эта статья предполагает, что вы уже ориентируетесь в данных понятиях.

Читать далее »

Популярность: 12%

C#

C#. Использование System.Console для создания игр в текстовом режиме. Часть 3

Продолжение статьи…
Часть 1
Часть 2

Главный цикл

Есть еще одна вещь, о которой вы должны знать, когда будете создавать игру, которая будет работать в окне консоли: главный цикл. Все игры обычно имеют основной цикл, который работает пока игра не завершится. Вот полезные шаблоны, которые можно использовать в главном цикле программы:

Посмотрите на комментарии к следующему коду, которые описывают, где происходит инициализация игры, а где пользовательский ввод и обновление экрана:

/// <summary>
/// Установите это статическое поле в true для выхода из игры
/// </summary>
static bool quit = false;

/// <summary>
/// Точка входа, инициализация игры и старт основного цикла
/// </summary>
static void Main(string[] args)
{
     // Будьте уверены, что пользователь нажмет Ctrl-C для выхода из игры
     // Установите Console.TreatControlCAsInput в true если хотите использовать Ctrl-C как  допустимое входное значение
     Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);

     Console.CursorVisible = false;

     /*** Инициализация игры! ***/

     MainLoop();
}

/// <summary>
/// Обработка нажатия Ctrl-C
/// </summary>
static void Console_CancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
     // К сожалению, в связи с ошибкой в .NET Framework v4.0.30319 вы не можете олаживать это
     // потому что Visual Studio 2010 выдает ошибку "No Source Available".
     // http://connect.microsoft.com/VisualStudio/feedback/details/524889/debugging-c-console-application-that-handles-console-cancelkeypress-is-broken-in-net-4-0
     Console.WriteLine("{0} hit, quitting...", e.SpecialKey);
     quit = true;
     e.Cancel = true; // Установка в true позволяет на закрывать программу сразу
}

/// <summary>
/// Главный цикл игры
/// </summary>
static void MainLoop()
{
     int elapsedMilliseconds = 0;
     int totalMilliseconds = TIME_LIMIT_SECONDS * 1000;
     const int INTERVAL = 100;

     while (elapsedMilliseconds < totalMilliseconds && !quit)
     {
          // Задержка на определенный период
          Thread.Sleep(INTERVAL);
          elapsedMilliseconds += INTERVAL;

          /*** Обновление экрана! ***/
      }

     Console.WriteLine("Игра окончена!");
}


Читать далее »

Популярность: 11%

C#

C#. Использование System.Console для создания игр в текстовом режиме. Часть 2

Продолжение статьи…
Часть 1

Специальные символы

Посмотрите еще раз на скриншот из Snipes. Вы обратили внимание, какие линии, кружочки, треугольники, прямоугольники и улыбающиеся лица? Это ведь не буквы и цифры! Как же так?

Давайте проведем эксперимент. Если вы уже открыли окно командной строки, откройте меню Windows, кликнув мышкой на значок «c:\» в верхнем левом углу и выберите «Свойства». Вы увидите, что командная строка обычно использует шрифт Lucida Console. Откройте таблицу символов «Пуск >> Выполнить >> charmap.exe» (Start >> Run >> charmap.exe) и выберите из списка шрифтов шрифт Lucida Console. Прокрутите список символов до греческих букв и сделайте двойной щелчок по одной из них (например, по символу зета Θ), таким образом, этот символ появится в текстовом поле «Для копирования». Далее прокрутите список до кириллических символов и выполните двойной щелчок на одном из них (например, на Ж). Нажмите кнопку «Копировать» для копирования текста в буфер обмена. Теперь вернитесь в командную строку, снова откройте меню и выберите «Изменить >> Вставить» (Edit >> Paste). Обратите внимание что получилось:

Символ зета вставился правильно, но вместо буквы «Ж», вставился знак вопроса (прим. переводчика: это актуально только для машин без настройки кириллицы). Это происходит, потому что консоль MS-DOS и все его потомки, могут отображать только 250 символов. Так как, изначально использовалась кодировка ASCII, которая содержит 255 символов, 250 из которых видимые и плюс 6 непечатаемых: сигнал, горизонтальное табулирование, null, возврат на один символ, перевод строки и перевод каретки. Сейчас они представлены в кодировке Unicode 437. Если вы являетесь читателем Head First C#, вы можете узнать из 9-ой главы, как использовать Unicode. Но если нет, не волнуйтесь – все, что нужно знать это то, что вы можете преобразовывать значение байт (от 0 до 255) в символы MS-DOS ASCII.

Читать далее »

Популярность: 12%

C#

C#. Использование System.Console для создания игр в текстовом режиме. Часть 1

От переводчика

Когда я наткнулся на статью об использовании класса System.Console, мне сразу понравилась форма, в которой автор излагал свои мысли. Статья предлагает окунуться в разработку текстовых игр, так, как это делали в 80-е годы, но уже современными средствами (C#, .NET), и на примере игры WordFinder, разобраться, какие инструменты доступны разработчику для создания консольных приложений. Я решил сделать перевод статьи и поделиться ею с вами. Для лучшего понимания статья разбита на 3 части. Все комментарии к исходному коду были переведены на русский язык.

Введение

Я отношу себя к молокососам старой школы игр, которые работают в текстовом режиме. Эти игры работают в консоли и отображают свою «графику» в виде символов, которые расположены в разных местах экрана, используя при этом всего 16 цветов. Кроме того, такие игры легко создавать в C# и .NET используя класс System.Console, который позволяет позиционировать курсор, делать анимацию, перемещая блоки буфера, использовать цвета и специальные символы, а также реагировать на действия пользователя. В этой обучающей статье, я ознакомлю вас со всеми инструментами для создания игр в ретро MS-DOS стиле, включая завершенную игру, которую вы сможете создать сами.

После того, как я написал книгу Head First C# я точно понял одно, что создание игры является отличным способом, чтобы улучшить ваши навыки на C#. Я приложил много усилий, чтобы помочь людям выучить C# и я часто получаю вопросы типа: «Что я должен делать, чтобы получать опыт?». Я думаю имеет смысл создавать игры в виде больших проектов для обучения и экспериментов, потому что вы начинаете с хорошим представлением о том, что вы будете делать. Так одной из целей данной статьи – дать вам что-то новое и интересное. Я надеюсь, что это лучший способ получения большого опыта и оттачивания навыка разработки на C#.

Читать далее »

Популярность: 18%

C#

C#. Асинхронный вызов метода используя делегат BeginInvoke и шаблон EndInvoke

Введение

В этой статье мы разберем несколько возможностей вызова метода асинхронно используя делегаты. Существует четыре различных способа асинхронного вызова метода используя методы BeginInvoke() и EndInvoke() класса Delegate. Эти четыре различных способа используют шаблон EndInvoke, WaitHandle, шаблон Polling и шаблон CallBack. В этой статье мы, также разберем шаблон EndInvoke. В последующих статьях мы уделим внимание шаблонам Polling и CallBack.

Читать далее »

Популярность: 33%

C#

MAXCACHE: 0.35MB/0.00640 sec