Потихоньку переделываю с С# на С++ - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > Полезное / Common > Программирование / Programming

Программирование / Programming
Ищете помощи в написании программы, есть сложность в выполнении задания (в институте и т.д.), пожалуйста, спросите у нас в данном форуме и мы обязательно вам поможем.

Ответ
Опции темы
Непрочитано 15.11.2012, 23:34   #1
Аватар для praetorianec
Пользователь

Автор темы (Топик Стартер) Потихоньку переделываю с С# на С++

Все же от код шарпа:

Код:
using System;
using System.IO;
using System.Drawing;
using System.Windows.Forms;

namespace Teragame.logger
{
    public class Log
    {
        static bool cf = false;    
        public static void warning(string text)
        {            
            (Application.OpenForms[0] as MainInterface).LogBox.Invoke((MethodInvoker)(delegate()
            {          
                if ((Application.OpenForms[0] as MainInterface).LogBox.Text.Length > 0)
                {
                    (Application.OpenForms[0] as MainInterface).LogBox.AppendText(Environment.NewLine);
                }
                (Application.OpenForms[0] as MainInterface).LogBox.AppendText(text);
                (Application.OpenForms[0] as MainInterface).LogBox.Select((Application.OpenForms[0] as MainInterface).LogBox.Text.Length - text.Length, text.Length);
                (Application.OpenForms[0] as MainInterface).LogBox.SelectionColor = Color.Yellow;
            }));
            if (cf) tw.WriteLine(text);
        }
        public static void error(string text)
        {
            (Application.OpenForms[0] as MainInterface).LogBox.Invoke((MethodInvoker)(delegate() {
            if ((Application.OpenForms[0] as MainInterface).LogBox.Text.Length > 0)
            {
                (Application.OpenForms[0] as MainInterface).LogBox.AppendText(Environment.NewLine);
            }
            (Application.OpenForms[0] as MainInterface).LogBox.AppendText(text);
            (Application.OpenForms[0] as MainInterface).LogBox.Select((Application.OpenForms[0] as MainInterface).LogBox.Text.Length - text.Length, text.Length);
            (Application.OpenForms[0] as MainInterface).LogBox.SelectionColor = Color.Red;
            }));
            if (cf) tw.WriteLine(text);
        }
        public static void info(string text)
        {
            (Application.OpenForms[0] as MainInterface).LogBox.Invoke((MethodInvoker)(delegate()
            {
                if ((Application.OpenForms[0] as MainInterface).LogBox.Text.Length > 0)
                {
                    (Application.OpenForms[0] as MainInterface).LogBox.AppendText(Environment.NewLine);
                }
                (Application.OpenForms[0] as MainInterface).LogBox.AppendText(text);
            }));
            if (cf) tw.WriteLine(text);
        }
        public static void extra_info(string text)
        {
            (Application.OpenForms[0] as MainInterface).LogBox.Invoke((MethodInvoker)(delegate()
            {
                if ((Application.OpenForms[0] as MainInterface).LogBox.Text.Length > 0)
                {
                    (Application.OpenForms[0] as MainInterface).LogBox.AppendText(Environment.NewLine);
                }
                (Application.OpenForms[0] as MainInterface).LogBox.AppendText(text);
                (Application.OpenForms[0] as MainInterface).LogBox.Select((Application.OpenForms[0] as MainInterface).LogBox.Text.Length - text.Length, text.Length);
                (Application.OpenForms[0] as MainInterface).LogBox.SelectionColor = Color.Lime;
            }));
            if (cf) tw.WriteLine(text);
        }
        static string name;
        static TextWriter tw;
        public static void form()
        {
            if (!cf)
                return;

            name = @"log\" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + ".log";
            tw = File.CreateText(name);
            extra_info("Log file created " + name);
        }
    }
}
От код С++

Код:
#pragma once

using namespace System;
using namespace System::IO;
using namespace System::Windows::Forms;
using namespace System::Drawing;



namespace Teragame
{
	namespace logger
	{
		class Log
		{
		private:
			static bool cf;
		public:
			static void warning (std::string text)
			{
				(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Invoke((MethodInvoker)(delegate()
				{
					if ((dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Text.Length > 0)
					{
						(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->AppendText("\r\n");
					}
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->AppendText(text);
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Select((dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Text.Length - text.length(), text.length());
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->SelectionColor = Color::Yellow;
				}
			   ));
				if (cf)
					tw->WriteLine(text);
			}
			static void error(std::string text)
			{
				(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Invoke((MethodInvoker)(delegate()
				{
					if ((dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Text.Length > 0)
					{
						(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->AppendText("\r\n");
					}
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->AppendText(text);
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Select((dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Text.Length - text.length(), text.length());
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->SelectionColor = Color::Red;
				}
			   ));
				if (cf)
					tw->WriteLine(text);
			}
			static void info(std::string text)
			{
				(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Invoke((MethodInvoker)(delegate()
				{
					if ((dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Text.Length > 0)
					{
						(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->AppendText("\r\n");
					}
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->AppendText(text);
				}
			   ));
				if (cf)
					tw->WriteLine(text);
			}
			static void extra_info(std::string text)
			{
				(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Invoke((MethodInvoker)(delegate()
				{
					if ((dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Text.Length > 0)
					{
						(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->AppendText("\r\n");
					}
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->AppendText(text);
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Select((dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->Text.Length - text.length(), text.length());
					(dynamic_cast<MainInterface*>(Application::OpenForms[0]))->LogBox->SelectionColor = Color::Lime;
				}
			   ));
				if (cf)
					tw->WriteLine(text);
			}
		private:
			static std::string name;
			static TextWriter *tw;
		public:
			static void form()
			{
				if (!cf)
					return;
				name = "log\\" + DateTime::Now.ToString("yyyy-MM-dd HH-mm-ss") + ".log";
				tw = File::CreateText(name);
				extra_info("Log file created " + name);
			}
		};
	}
}
std::string
error: namespace "std" не содержит члена "string"

Последний раз редактировалось praetorianec; 16.11.2012 в 00:15.
praetorianec вне форума Ответить с цитированием
Непрочитано 16.11.2012, 00:30   #2
Аватар для Gattsu
Пользователь

По умолчанию Re: Потихоньку переделываю с С# на С++

Посмеялся =)
Зачем??
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 16.11.2012, 00:30   #3
Аватар для praetorianec
Пользователь

Автор темы (Топик Стартер) Re: Потихоньку переделываю с С# на С++

все дал чехлов String с большой буквы))) ребят как выполнить это на С++?
С#
namespace Teragame.logger
{
public class Log
{
static bool cf = false;
public static void warning(string text)
{
(Application.OpenForms[0] as MainInterface).LogBox.Invoke((MethodInvoker)(deleg ate()
{
if ((Application.OpenForms[0] as MainInterface).LogBox.Text.Length > 0)
{
(Application.OpenForms[0] as MainInterface).LogBox.AppendText(Environment.NewLi ne);
}
(Application.OpenForms[0] as MainInterface).LogBox.AppendText(text);
(Application.OpenForms[0] as MainInterface).LogBox.Select((Application.OpenForm s[0] as MainInterface).LogBox.Text.Length - text.Length, text.Length);
(Application.OpenForms[0] as MainInterface).LogBox.SelectionColor = Color.Yellow;
}));
if (cf) tw.WriteLine(text);
}

C++
namespace Teragame
{
namespace logger
{
class Log
{
private:
static bool cf=false;
public:
static void warning (String text)
{
(dynamic_cast<~MyInterface>(Application::OpenForms[0]))->LogBox->Invoke((MethodInvoker)(delegate()
{
if ((dynamic_cast<MainInterface*>(Application::OpenFo rms[0]))->LogBox->Text.Length > 0)
{
(dynamic_cast<MainInterface*>(Application::OpenFor ms[0]))->LogBox->AppendText("\r\n");
}
(dynamic_cast<MainInterface*>(Application::OpenFor ms[0]))->LogBox->AppendText(text);
(dynamic_cast<MainInterface*>(Application::OpenFor ms[0]))->LogBox->Select((dynamic_cast<MainInterface*>(Application: :OpenForms[0]))->LogBox->Text.Length - text.length(), text.length());
(dynamic_cast<MainInterface*>(Application::OpenFor ms[0]))->LogBox->SelectionColor = Color::Yellow;
}
));
if (cf)
tw->WriteLine(text);
}

Еще чо-то MainInterface не опредиляеться хоть и есть такой класс. Потом если ставлю ~MainInterface то нечего не происходит, то есть не пишет ошибку. Советчик нечего не говорит.

Добавлено через 9 минут
Цитата:
Сообщение от Gattsu Посмотреть сообщение
Посмеялся =)
Зачем??
получать - знания, навыки, практику. Это с сурсов что выложили.

Последний раз редактировалось praetorianec; 16.11.2012 в 00:39. Причина: Добавлено сообщение
praetorianec вне форума Ответить с цитированием
Непрочитано 16.11.2012, 00:44   #4
Аватар для Gattsu
Пользователь

По умолчанию Re: Потихоньку переделываю с С# на С++

Ну сначала "хотя бы" язык С++ выучите

Понимаете что С# это не С++ и копировать тупо код чтобы каким-то чудом он заработал
Gattsu вне форума Отправить сообщение для Gattsu с помощью Skype™ Ответить с цитированием
Непрочитано 16.11.2012, 00:50   #5
Пользователь

По умолчанию Re: Потихоньку переделываю с С# на С++

Вопрос зачем от Gattsu вполне правильный.

Сюда с Вашего кода, Вы переписываете всё с С# на C++/CLI, в итоге вы получите тот же exe'шник для .Net. С таким же успехом вы можете переписать на Basic.Net.

(Это несколько странно учитывая то, что Вы рветесь в сторону чистого C)
__________________
НЛО прилетело и оставило подпись здесь.
YK_Sirius вне форума Ответить с цитированием
Непрочитано 16.11.2012, 01:08   #6
Аватар для praetorianec
Пользователь

Автор темы (Топик Стартер) Re: Потихоньку переделываю с С# на С++

посудить по вашей логике фраемворки нета не использовать воще?????

Добавлено через 1 час 27 минут
#define #GAMESERVER#

using namespace System;

#include "Properties/Resources.Designer.h"
#include "logger/Log.h"
#include "Cfg.h"
#include "IdFactory.h"
#include "SQLjec.h"
#include "ClientManager.h"

private ref class GameServer
{
private:
static GameServer^ gs = gcnew GameServer();
public:
static GameServer^ getInstance()
{
return gs;
}
protected:
TcpListener^ _listener;
public:
GameServer()
{

XElement^ xml = XElement::Parse(Properties::Resources::tera);
if (int::Parse(xml->Element("license")->Element("key")->Attribute("value")->Value) == 1234)
{
logger::Log::form();
Cfg::init("all");
IdFactory::getInstance()->init();
SQLjec::getInstance();
logger::Log::extra_info("Server start");
_listener = gcnew TcpListener(IPAddress::Parse(Cfg::SERVER_HOST), Cfg::SERVER_PORT);
_listener->Start();
TcpClient^ clientSocket = default(TcpClient);
while (true)
{
clientSocket = _listener->AcceptTcpClient();
accept(clientSocket);
}
}
else
{
logger::Log::error("Programm not activate");
return;
}
}
private:
void accept(TcpClient^ clientSocket)
{
ClientManager::getInstance()->addClient(clientSocket);
}
};


#endif

Последний раз редактировалось praetorianec; 16.11.2012 в 02:35. Причина: Добавлено сообщение
praetorianec вне форума Ответить с цитированием
Непрочитано 16.11.2012, 02:39   #7
Пользователь

По умолчанию Re: Потихоньку переделываю с С# на С++

За Вас тут никто код переписывать не будет.
Кроме того на форуме есть BB-код для отрывков кода (это на будущее)

Оффтоп:
Свернуть ↑Развернуть ↓
__________________
НЛО прилетело и оставило подпись здесь.
YK_Sirius вне форума Ответить с цитированием
Непрочитано 16.11.2012, 03:24   #8
Аватар для PROGRAMMATOR
Администратор

По умолчанию Re: Потихоньку переделываю с С# на С++

Логики у оригинала нет, код как после обфускации, зачем "это" переносить? Просто подсмотрите encrypt\decrypt и пишите с 0 на своем C++.
PROGRAMMATOR вне форума Отправить сообщение для PROGRAMMATOR с помощью ICQ Отправить сообщение для PROGRAMMATOR с помощью Skype™ Ответить с цитированием
Непрочитано 16.11.2012, 04:54   #9
Аватар для darkevil

По умолчанию Re: Потихоньку переделываю с С# на С++

Цитата:
Сообщение от praetorianec Посмотреть сообщение

Добавлено через 9 минут

получать - знания, навыки, практику. Это с сурсов что выложили.
Практика показывает, для того чтобы что-то отложилось в голове, нужно писать самому и с 0-ля, а не переписывать уже готовое под копирку или шаблон.
__________________
darkevil вне форума Отправить сообщение для darkevil с помощью ICQ Отправить сообщение для darkevil с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 16.11.2012, 07:07   #10
Аватар для Yorie

По умолчанию Re: Потихоньку переделываю с С# на С++

Цитата:
Сообщение от praetorianec Посмотреть сообщение
все дал чехлов String с большой буквы))) ребят как выполнить это на С++?

Еще чо-то MainInterface не опредиляеться хоть и есть такой класс. Потом если ставлю ~MainInterface то нечего не происходит, то есть не пишет ошибку. Советчик нечего не говорит.
С std::string банальнейшая ошибка. Вы ничему не научитесь, бездумно перенося код с одного языка на другой.
Что значит "ставлю ~MainInterface()"? Вы знаете, что ~MainInterface() - это деструктор и он, в общем случае, не требует вызова вручную (более того, это может привести к серьезным ошибкам)?
__________________
// aka Deft
Yorie вне форума Ответить с цитированием
Сказали спасибо:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 13:03. Часовой пояс GMT +3.

Вверх