Ошибка: Failed to parse the Currency Converter XML document.
$18 440.20


Ошибка: Failed to parse the Currency Converter XML document.
$20 701.05


Ошибка: Failed to parse the Currency Converter XML document.
$2 468.28


Пишим на .Net Framework

Доброго времяни суток, вам. Сейчас мы обсудим интересную тему для Win С++ программиста, а именно возможность и актуальность использования платформы .NET Framework. До сих пор не умолкают споры скептиков и поклоников новых технологий от MS, первые утверждают, что за красочным PR-маркетенгом у этой технологии нет ничего, что это очередная ‘пустышка’ вроде ActiveX и кроме как подмять под себя рынок ,MS не видет других целей. К большому сожалению, в этом есть доля правды, обещенная мультиплатформенность ‘аля Java’ в .NET находиться лишь на гране инженерной мысли и технического эмбриона, иными словами — мультиплатформенность кода, на сегодняшний день, просто отстутствует, так или иначе, .NET программистам придется выпускать продукты заточенные под Windows Vista (где Framework является пакетом по-умолчанию) и кажеться, это устраивает многих.(еще есть Mono активно используемое под Linux прим. ред.) Плюсом же, несомнено,является родной язык .NET Framework – C# и студия разработки Visual Studio, которые, придутся по вкусу любителям IDE сред. А сам .NET открывает огромные просторы возможностей своих бибилиотек, которые по функционабельности не уступают VCL или MFC (тьфу на него). И самое главное — доступ к этим функциям осуществляется не только на С# или J#, но и на Visual Basic и С++, но мы рассмотрим, конечно же последнее…



Для начала поставим на вооружение компилятор, способный работать с .NET, логично установить продукт от MS, я установил free Visual C++ Toolkit, оптимизированный под работу с .NET, но способный собирать ISO C++ Standard – исходники. Как вы, наверно догадались он command prompt, т.е консольный. Взять его можно бесплатно с http://msdn.microsoft.com/visualc
Но лучшем вариантом, конечно будет — установить Visual Studio 2003 или новее.

Итак напишем, для начала, программу Hello:
#include «stdio.h»

// ну и подключем новые возможности:
#using
#using

using namespace System; //открываем пространство имен

int main()
{
printf(«Hello from STD\n»); // стандарт

Console::WriteLine(S«Hello from dot NET Framework\n»); //А вот вам и новенькое

String *str = «Hello from string»;
Console::WriteLine(str);

Console::ReadLine(); //Читаем строку, все просто как в паскале
return 0;
}

компилим: cl /clr Hello.cpp

На выходе мы получаем исполняемый файл (размером в 48 кб. ) и файл .obj (4 кб.), т.е суммарно мы получили 52 кб. , нормально, учитывая занимаемое место самим .NET.

Но для полноценной работы с технологией dot net, нам придеться сделать небольшую поправку на MS синтаксис, точнее на синтасис языка Visual C++, к примеру:

#include
using namespace std;
int main()
{
unsigned short a = 0x5555; // это 0101
unsigned short b = 0xFFFF; // это 1111

cout << hex << ( a ^ b ) << endl; // присваиваем с помощью ^ два значения и печатаем результат.
}

Давайте пример посложней, с использованием присвоения ^ и классов :

#include «stdafx.h»
#include «conio.h»

#using
#using

ref class MyClass {
public:
void Test() {}

value class Value_Nested_Class {
public:
int i;
};
};

int main() {
MyClass ^ h_MyClass = gcnew MyClass;

MyClass::Value_Nested_Class y;
y.i = 32;
System::Console::WriteLine(y.i);
System::Console::ReadLine();
}

Компилируем, программа выдает:
32

Думаю, теперь понятней, как создавать и присваивать объекты. Давайте же вернемся к нашей основной теме. Напишем программу, использующую платформу .NET, программа наша будет переводит строку в массив и печатать его. Такие программки чатсто пишут на уроках информатики из-за нехватки воображения или навыков, так что мы тоже не будем далеко ходить:

#include «stdafx.h»
#include «conio.h»
#include // обычная библиотека для работы со строками

#using
#using

using namespace System;
using namespace System::Runtime::InteropServices;

int main() {
char buf[] = «PROSTO STROKA»; // совершено обычная строка
int len = strlen(buf);

array^ byteArray = gcnew array(len + 2); // массив

Marshal::Copy((IntPtr)buf,byteArray, 0, len);

//получаем границы и начинаем печать:
for ( int i = byteArray->GetLowerBound(0); i GetUpperBound(0); i++ ) {
char dc = *(Byte^) byteArray->GetValue(i);
Console::Write((Char)dc);
}

Console::WriteLine(); //Выводим наш массив
Console::ReadLine();
}

Программа введет PROSTO STROKA.

Хочеться отметить, очивидные приемущества .NET платформы для разработчкиа — относительная легкость в работе с DLL и XML объектами. Сейчас, подгрузим в свою программу XML документ:

#using
#using

using namespace System;

#using //Подключаем библиотеки
using namespace System::Xml; // и открываем пространство имен

int main()
{
XmlDocument* xmlDoc = new XmlDocument(); /*создаем новую переменную, типа XML документ */

try
{
xmlDoc->Load(S«sample.xml»); // теперь просто загружаем документ
Console::WriteLine(S«Document loaded ok.» );
}
//В случае ошибки ругаемся:
catch (Exception* e)
{
Console::WriteLine(S«problem creating or writing to event log»);
Console::WriteLine(e->Message);
}

Console::ReadLine();
return 0;
}

Дальше, возможно считать из документа параметры, да и вообще делать с ним все что угодно.

В конце статьи, хочу написать, то о чем упомянул в самом начале – об актуальности .NET. Лично я, не считаю необходимостью с головой кидаться на новую платформу, ибо есть большая вероятность, год через два, остаться ‘не удел’ как разработчик. Хотя на руках уже третья версия .NET с расширенными возможностями, а на недалекое будущие рисуются переспективы, ввода интереснейшей системы, отличной от всех ранее, разработки GUI приложений под Win. На рынке труда легко найти денежные вакансии для разработчиков .NET, многие, зарекомендовавшие себя, software продукты, выпускаются под управлением платформы .NET, книгами и документацией по .NET завален интернет – все это, возможно, показатель качества работы PR — отдела MS, но не отдела разработок. Вообщем, как всегда, все покажет время.

 

Интересное

Непростые вопросы...
Сегодня, сплошь и рядом, можно столкнуться с публичным неприятием рекламы. Потребитель говорит: «реклама промывает мне мозги». Он вопрошает: «доколе?» Он утверждает: «ненавижу навязчивость во всех...
Подробнее...
Управление сетями. Правила...
Идея создания сетей для передачи данных на большие и не очень большие расcтояния витала в воздухе с той самой поры, как человек впервые задумался над созданием телекоммуникационных устройств. В...
Подробнее...
Cинхронизация времени...
ЗадачаОрганизовать синхронизацию времени контроллеров домена с внешними источниками.Исходные данные.Все серверы W2K3 Схема подключения к внешней сети Internet-Router-ISA-DC.Router управляется...
Подробнее...
Криптография: палка о двух...
Криптография в наши дни повсюду. Большинство пользователей каждый день извлекают из неё пользу, даже если делают это не осознанно. В этой статье мы рассмотрим, почему криптография является «палкой...
Подробнее...
О политике защиты...
Если вы работаете в той же сфере, что и я, то наверняка должны выполнять различные требования по информационной безопасности. В зависимости от вида деятельности, такие требования могут быть...
Подробнее...
Smarty – не просто шаблоны
Скажем сразу, этот материал не будет вас учить пользоваться базовыми возможностями данной библиотеки. Напротив, я копну гораздо глубже. Цель этого материала взглянуть на шаблонизатор Smarty с...
Подробнее...
Поисковики убивают...
В то время как работа поисковиков становится всё «умнее», точнее и объективнее, оптимизация сайтов для поисковых систем теряет свою эффективность, ставя под угрозу рентабельность...
Подробнее...
Ввод ограничений на...
Введение: В среде домена централизованное управление рабочими станции можно осуществлять через групповые политики домена. Если же у вас нет сервера, всё равно можно использовать групповые политики...
Подробнее...
Как избавиться от подмены...
Как избавиться от подмены домашней страницы?Ребенок залез на очень неприятный сайт... Теперь эта хреновина прописалась где-то в глубинах системы (у нас установлен millenium), и при каждой...
Подробнее...
Оптимизация и с чем ее едят
Вы спросите, зачем это нужно, если сейчас мощность «железа» настолько высока, что всякого рода оптимизация все равно заметно не повлияет на быстродействие. Да, отчасти это так, но у многих еще...
Подробнее...