Появилась у меня однажды задача компиляции программы под разные устройства. Ряд устройств в моём случае обладают специфическими возможностями и для них задействуются специальные библиотеки, а для некоторых обычных устройств - эти библиотеки надо исключать. Можно конечно комментировать каждый раз - но включений довольно много и такой подход весьма проблематичен.
Но есть очень хороший выход из этой ситуации, называется он условная компиляция.
Для условной компиляции используются директивы: #define, #if, #else, #endif.
Это самый простой и примитивный пример, может пригодится, но лучше использовать OpenXML.
В данной публикации приведён пример создания и вывода документа Excel из программы написанной на языке C#.
Приведён самый простенький пример для использования в целях обучения.
Для начала о самой процедуре:
Вся суть генерации штрихового кода EAN-13 заключается в поиске контрольного разряда (последней 13-ой цифры).
Алгоритм поиска этого значения таков:
1) Оставляем 12 цифр (последняя 13 - контрольная которую ищем).
2) Суммируем разряды, стоящие на четных местах.
3) Результат пункта 2 умножаем на 3 .
4) Суммируем разряды, стоящие на нечетных местах.
5) Суммируем результаты пунктов 3 и 4.
6) В полученном числе крайнюю справа цифру (остаток от деления на 10) вычесть из 10, если остаток 0 то значение равно 0.
Полученный результат и есть значение контрольной цифры.
Теперь пример на класса реализующего этот алгоритм на C#:
Публикация из архивов, вдруг пригодится...
Столкнулся когда-то с необходимостью делать скриншоты с КПК, и так и не нашёл ни одной подходящей программы. А именно простой, маленькой и чтобы ничего не устанавливалось, но при этом работала.
Решил написать, часа два окучивал интернет по поводу того как это сделать - всё оказалось не так то просто, на мобильных устройствах через .NET в чистом виде не получится только через API.
Простой пример работы чтения поступающих данных из COM порта с использованием SerialPort на C#.
Всё довольно просто, для получения данных нам потребуется использовать событие DataReceived.
Пример:
private string stroka="";
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
this.Invoke(new EventHandler(DoUpdate));
}
private void DoUpdate(object s,EventArgs e)
{
stroka = stroka + serialPort1.ReadExisting();
}
Интерполированная строка в C#, это строа перед которой находится символ $.
Такая строка может содержать специальные выражения в фигурных скобках:
int x = 18;
Console.Write($"Указанный возраст {x} лет."); // Выводит: Указанный возраст 18 лет.
Внутри фигурных скобо может находится любое допустимое выражение C# любого типа. C# преобразует значение value в string, используя метод ToString() или эквивалентный ему для выбранного типа.
Формат вывода может быть изменен добавлением выражения форматирования после двоеточия, например:
string s = $"223 in HEX format: {223:X2}"; // X2 - Двухзначный шестнадцатиричный формат числа.
// Результат \"223 in HEX format: DF\"
Интерполированная строка должна быть в одну строку или содержать дословный идентификатор "@", к примеру:
int x = 10;
string s = $@"The wall height is {
x} meters.";
Чтобы включить фигурную скобкук в интерполированную строку, надо просто повторить фигурную скобку дважды.
Пример преобразования XML в DYNAMIC и его использование.
Для начала, нам понадобятся некоторые библиотеки:
using System;
using System.ComponentModel;
using System.Xml.Linq;
using Newtonsoft.Json;
Код:
string str = "<response><setter><name>Kiril</name></setter></response>";
XDocument doc = XDocument.Parse(str);
string jsn = JsonConvert.SerializeXNode(doc);
dynamic res = JsonConvert.DeserializeObject(jsn);
Console.WriteLine(res.response.setter.name);
Этот код преобразует строку string в XML, затем XML в JSON и затем в объект dynamic.
Затем из объекта получает свойство Name и выводит его в консоль.
Часто бывает необходимость передать за один раз некоторый набор данных в процедуру, в этой публикации будет приведен пример как это сделать на языке C# для базы данных MSSQL.
Использовать будем обычный способ вызова процедуры без каких либо фреймворков.
Для начала создадим тестовую таблицу в базе данных:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Bottles](
[Uid] [uniqueidentifier] NOT NULL,
[Name] [varchar](50) NULL,
[Color] [varchar](50) NULL
) ON [PRIMARY]
GO
В данной таблице будем размещать бутылки разных названий и цветов (просто для теста).
На днях понадобилось сортировать списки, удивительно, на сколько это оказалось просто.
Допустим, имеем мы класс:
public class User
{
public int id;
public string name;
}
Создаем список: