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

Популярность: 3%
мониторинг серверов cs 1.6C#. Копирование больших файлов
Известно, что в .NET для копирования файлов программистами используется метод Copy, класса File. В большинстве случаев вариант использования File.Copy оправдывает себя. Не нужно ни о чем беспокоиться, достаточно только передать путь к исходному и целевому файлу — система сама все проконтролирует: считает информацию из исходного файла, создаст новый и запишет его. При этом разработчик никак не может повлиять на процесс копирования — прервать его, поставить на паузу. Еще одна проблема возникает при копировании файлов большого размера. Если это выполнять через метод Copy и не в отдельном потоке, то ваше приложении будет в зависшем состоянии, пока процесс копирование не завершиться. Для решения этих проблем я написал класс, который побайтно копирует файл и в процессе передает данные приложению. Весь процесс работает исключительно на родных функциях библиотеки .NET, поэтому функций WIN API вы здесь не найдете.
Также, в этой статье мы разберем как работать с объектами класса FileStream.
Давайте разберем структуру класса.
Читать далее »
Популярность: 15%
C# для начинающих. Использование метода String.Format
В библиотеке .NET очень хорошо реализована работа со строками. Такие классы как StringBuilder и String существенно облегчают жизнь простому программисту. Одной очень важной функцией класса String, является функция Format. Эта функция аналогична функции sprintf из языка C++. Суть функции заключается в том, чтобы сформировать строку из нескольких составляющих и с определенным форматированием. В качестве составляющих могут выступать типы строк, различные форматы чисел, даты и перечисления. Визуально, код, написанный с помощью метода Format, читается легче. Библиотека .NET предоставляет программисту довольно большой выбор типов форматирования. Давайте вкратце познакомимся с принципом использования метода Format, а в конце статьи я приведу сводную таблицу всех типов форматирования.
Читать далее »
Популярность: 32%
C#. Переключение языка ввода. Разбираем класс InputLanguage
В библиотеке .NET для работы с языком ввода существует класс InputLanguage. Ранее, при разработке программ под Win32 для переключения, загрузки и определения языка ввода использовались WINAPI-функции типа GetKeyboardLayout, LoadKeyboardLayout и ActivateKeyboardLayout, а также некоторые другие. На сегодняшний день разработчики под .NET могут не заморачиваться с использованием функций WINAPI. Давайте подробнее рассмотрим класс InputLanguage и определим чего в нем все таки не хватает для полного боекомплекта.
Класс InputLanguage
Итак, описываемый класс находится в сборке System.Windows.Forms, не поддерживает наследование (описан с модификатором sealed). Поля, которые необходимы для установки, определения и переключения языка ввода, статические. В самом объекте, основанного на классе InputLanguage, хранится характеристика какого-либо языка.
Читать далее »
Популярность: 10%
Сборщик PDF. Перезагрузка
Переупаковал Сборщик PDF с для поддержки PDFCreator версии 1.2.
Для полноценной работы Сборщик PDF, требуется:
- для конвертации из фалов Word и Excel требуется установка PDFCreator (на день поста — версия 1.2);
- при установке PDFCreator обязательно должен быть выбран Ghostscript;
- программа тестировалась на Word и Excel 2003, при этом при установки офисного пакета, должна быть выбрана опция «Поддержка программирования .NET» для установки нужных библиотек.
Если кто-то ставил программу с офисов версии выше 2003, прошу отписаться в комментариях о результатах работы Сборщик PDF.
Сборщик PDF — программа для пакетной обработки PDF-файлов.
Популярность: 3%
C#. Простой пример использования логирования log4net
Эта статья для тех, кто хочет быстро начать использовать логирование в своих программах. В доступной форме рассмотрим подключение и использования библиотеки для ведения логов — log4net. Я не буду расписывать достоинства и недостатки данного логгера. Просто хочу привести пример, который подтолкнет новичков на использование логирования при разработке своих программ. Логирование будет вестись просто в текстовый файл. Если у вас уже есть какой-то проект, то все настройки вы можете проводить в нем. Все остальные, могут создать новый проект — так поступлю я, и начать использовать логирование. Скачиваем последнюю версию библиотеки по следующему адресу. Распаковываем…
Популярность: 23%
C#. Как определить состояние подключения к интернету
В библиотеке .NET нет функции для проверки состояния подключения к интернету. Для проверки состояния и получения некоторых настроек можно использовать функцию InternetGetConnectedState из библиотеки WINAPI. Эту функцию можно использовать для различных протоколов, типа: Gopher, FTP и HTTP. В использовании InternetGetConnectedState нет ничего сложного. Эта функция импортируется из библиотеки WININET и после использования возвращает True или False, при этом в заданную переменную записывается значение, которое впоследствии сравнивается с константами.
Функция позволяет определять посредством чего выполнено подключение к интернету (модем или LAN), используется ли proxy и установлен ли RAS(Remote Access Service).
Читать далее »
Популярность: 10%
C#. Асинхронный вызов метода используя шаблоны Polling и Callback
В предыдущей статье, Асинхронный вызов метода используя делегат BeginInvoke и шаблон EndInvoke, мы рассмотрели несколько способов использования асинхронного вызова с помощью делегатов. Также, разобрали, что асинхронно вызвать метод можно четырьмя способами используя BeginInvoke() и EndInvoke() класса Delegate. Эти четыре способа используют шаблоны EndInvoke, WaitHandle, Polling и Callback.
В этой статье мы рассмотрим как можно асинхронно вызвать метод используя шаблон Polling и Callback. Прочтите предыдущую статью, чтобы понять, как работают методы BeginInvoke() и EndInvoke(). Эта статья предполагает, что вы уже ориентируетесь в данных понятиях.
Читать далее »
Популярность: 12%
C#. Использование System.Console для создания игр в текстовом режиме. Часть 3
Продолжение статьи…
Часть 1
Часть 2
Главный цикл
Есть еще одна вещь, о которой вы должны знать, когда будете создавать игру, которая будет работать в окне консоли: главный цикл. Все игры обычно имеют основной цикл, который работает пока игра не завершится. Вот полезные шаблоны, которые можно использовать в главном цикле программы:
- Console.CancelKeyPress делает курсор невидимым. Таким образом, вас не будет раздражать мерцание;
- событие Console.CancelKeyPress возникает, когда пользователь нажимает Ctrl-C, но только если свойство Console.TreatControlCAInput не установлено в true;
- смотрите комментарии к коду статьи для получения больше информации, как обрабатывать событие CancelKeyPress;
- вызов System.Threading.Thread.Sleep() в главном цикле добавляет небольшую задержку, а также разгружает ваш процессор;
- устанавливайте свойство Console.KeyAvailable в true, если хотите принимать сообщения с клавиатуры. Таким образом, вы сможете прочитать его с помощью метода Console.ReadKey();
Посмотрите на комментарии к следующему коду, которые описывают, где происходит инициализация игры, а где пользовательский ввод и обновление экрана:
/// <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#. Использование 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#. Использование 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#. Асинхронный вызов метода используя делегат BeginInvoke и шаблон EndInvoke
Введение
В этой статье мы разберем несколько возможностей вызова метода асинхронно используя делегаты. Существует четыре различных способа асинхронного вызова метода используя методы BeginInvoke() и EndInvoke() класса Delegate. Эти четыре различных способа используют шаблон EndInvoke, WaitHandle, шаблон Polling и шаблон CallBack. В этой статье мы, также разберем шаблон EndInvoke. В последующих статьях мы уделим внимание шаблонам Polling и CallBack.
Читать далее »
Популярность: 33%


