Ru-MaNGOS

Вернуться   Ru-MaNGOS > Документация > Языки программирования

Важная информация

Языки программирования Изучаем С++, Sql, php, Lua, Python

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.06.2012, 16:50   #41
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
По умолчанию

Подскажите как в данном примере получать brSize = e->BytesReceived; раз в секунду
весь пример попытка получить скорость скачивания;
Код:
_WebClient->DownloadFileCompleted += gcnew AsyncCompletedEventHandler(this, &Form1::_DownloadFileCompleted);
_WebClient->DownloadProgressChanged += gcnew System::Net::DownloadProgressChangedEventHandler(this, &Form1::_DownloadProgressChanged);
_WebClient->DownloadFileAsync(gcnew Uri(_URL), _SaveAs);

тут срабатывает постоянно поэтому значение brSize не раз в секунду как нам надо.
Код:
void Form1::_DownloadProgressChanged(System::Object ^sender, System::Net::DownloadProgressChangedEventArgs ^e)
{
    brSize = e->BytesReceived;
	brSizeLast = brSize - brSizeLast;
	Int64 tbtrSize = e->TotalBytesToReceive;
	Int64 ProgressPercentage = brSize * 100 / (tbtrSize);

	String^ drawString = Convert::ToString(ProgressPercentage) + "%"+Convert::ToString(diff);
	System::Drawing::Font^ drawFont = gcnew System::Drawing::Font( "Arial",8.25 );
	SolidBrush^ drawBrush = gcnew SolidBrush( Color::Black );
	PointF drawPoint = PointF(324/2 - 10, 23 / 2 - 7);

	progressBar1->Refresh();
	progressBar1->CreateGraphics()->DrawString( drawString, drawFont, drawBrush, drawPoint );
	progressBar1->Value = e->ProgressPercentage;
}
функция на таймере раз в 1сек срабатывает
Код:
void Form1::dSpeed(System::Object^  sender, System::EventArgs^  e)
{
	Int64 diff = (brSize-brSizeLast)/1024;
}
p.s переменные обьявлены глобально
Код:
Int64 brSizeLast = 0;
INT64 brSize = 0;
Int64 diff = 0;
вся функция откуда что вызывается
__________________
Когда-нибудь на оффе поставят Mangos...
partizanes вне форума   Ответить с цитированием
Старый 29.06.2012, 17:34   #42
rsa
Почетный флудер
Старожил
 
Аватар для rsa
 
Регистрация: 08.03.2010
Адрес: Мурманск, Россия
Сообщений: 788
Сказал(а) спасибо: 55
Поблагодарили 333 раз(а) в 151 сообщениях
Записей в дневнике: 1
rsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранитаrsa Как самоцвет среди гранита
По умолчанию

ставите блокировки в метод счетчика и метод таймера а в таймере под блокировкой перебрасываете значения из счетчика в какой-то глобал и обнуляете счетчик. и естессно пускаете их в разных нитях.
rsa вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
partizanes (29.06.2012)
Старый 29.06.2012, 18:26   #43
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Не проще объем скачанного разделить на время прошедшее с начала скачивания? Получите среднюю скорость скачивания.

На C# пример:

Код:
using System;
using System.ComponentModel;
using System.Drawing;
using System.Net;
using System.Windows.Forms;

namespace WinFormsDownloadFileSpeed
{
    public partial class Form1 : Form
    {
        private WebClient Client = new WebClient();

        private string url = "http://snapshot.opera.com/windows/1986_12.01-1491/Opera-Next-12.01-1491.i386.exe";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Client.DownloadFileCompleted += new AsyncCompletedEventHandler(Client_DownloadFileCompleted);
            Client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(Client_DownloadProgressChanged);
            Client.DownloadFileAsync(new Uri(url), "temp.file", DateTime.Now);
        }

        void Client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e)
        {
            DateTime startTime = (DateTime)e.UserState;

            double speed = (e.BytesReceived / 1024) / (DateTime.Now - startTime).TotalSeconds;

            string text = String.Format("Speed: {0:F3} KB/sec", speed);
            PointF drawPoint = new PointF(progressBar1.Width / 2 - 40, progressBar1.Height / 2 - 7);

            progressBar1.Refresh();
            progressBar1.CreateGraphics().DrawString(text, SystemFonts.DefaultFont, Brushes.Black, drawPoint);
            progressBar1.Value = e.ProgressPercentage;
        }

        void Client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
        {
            MessageBox.Show("Downloaded!");
        }
    }
}

Последний раз редактировалось TOM_RUS; 29.06.2012 в 18:51.
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
partizanes (29.06.2012)
Старый 29.06.2012, 20:22   #44
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
По умолчанию

Код:
void Form1::_DownloadProgressChanged(System::Object ^sender, System::Net::DownloadProgressChangedEventArgs ^e)
{
    DateTime startTime = static_cast<DateTime>(e->UserState);

    Int64 brSize = e->BytesReceived;
	Int64 tbtrSize = e->TotalBytesToReceive;
	Int64 ProgressPercentage = brSize * 100 / (tbtrSize);

	Int32 speed = (brSize / 1024) / (DateTime::Now - startTime).TotalSeconds;

	String^ drawString = Convert::ToString(ProgressPercentage) + "% Speed:"+Convert::ToString(speed)+" Кб/с";
	System::Drawing::Font^ drawFont = gcnew System::Drawing::Font( "Arial",8.25 );
	SolidBrush^ drawBrush = gcnew SolidBrush( Color::Black );
	PointF drawPoint = PointF(324/2 - 10, 23 / 2 - 7);

	progressBar1->Refresh();
	progressBar1->Value = e->ProgressPercentage;
	progressBar1->CreateGraphics()->DrawString( drawString, drawFont, drawBrush, drawPoint );
	
}
работает ,но мерцает , периодически исчезает текст и появляется через пол секунды .

сложные расчеты?backgroundworker?

add глючит на вин7
на 2003 не глючит;



debug намекает что строчка пропадает при

Код:
 	while(_WebClient->IsBusy)
 	{
 		Application::DoEvents();
 	}
Добавлено через 1 час 7 минут
перенес
Код:
	while(_WebClient->IsBusy)
	{
		String^ drawString = Convert::ToString(ProgressPercentage) + "% Speed:"+Convert::ToString(speed)+" Кб/с";
		System::Drawing::Font^ drawFont = gcnew System::Drawing::Font( "Arial",8.25 );
		SolidBrush^ drawBrush = gcnew SolidBrush( Color::Black );
		PointF drawPoint = PointF(324/2 - 10, 23 / 2 - 7);
		progressBar1->CreateGraphics()->DrawString( drawString, drawFont, drawBrush, drawPoint );
		Application::DoEvents();
	}
перестало мигать

Код:
void Form1::_DownloadProgressChanged(System::Object ^sender, System::Net::DownloadProgressChangedEventArgs ^e)
{
    DateTime startTime = static_cast<DateTime>(e->UserState);

     Int64 brSize = e->BytesReceived;
	 Int64 tbtrSize = e->TotalBytesToReceive;
	 ProgressPercentage = brSize * 100 / (tbtrSize);

 	 speed = (brSize / 1024) / (DateTime::Now - startTime).TotalSeconds;

	progressBar1->Refresh();
 	progressBar1->Value = e->ProgressPercentage;
	
}
__________________
Когда-нибудь на оффе поставят Mangos...

Последний раз редактировалось partizanes; 29.06.2012 в 19:46.
partizanes вне форума   Ответить с цитированием
Старый 29.06.2012, 20:42   #45
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Можно просто создать свой кастомный прогресс бар.
Вложения
Тип файла: zip WinFormsDownloadFileSpeed.zip (17.9 Кб, 422 просмотров)
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
partizanes (29.06.2012)
Старый 29.06.2012, 20:57   #46
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
По умолчанию

в моей программе после
_WebClient->DownloadFileAsync(gcnew Uri(_URL), _SaveAs, DateTime::Now);
следущий код
Код:
String^ Form1::getMD5Stream(String^ fileName)
{
	FileStream^ fs = File::OpenRead( fileName );
...
поэтому приходиться использовать
Код:
Application::DoEvents();
сразу после
Код:
 DownloadFileAsync
из за этого все проблемы с мерцанием.

Спасибо за подсказку и вообщем то готовый код.
__________________
Когда-нибудь на оффе поставят Mangos...
partizanes вне форума   Ответить с цитированием
Старый 29.06.2012, 21:57   #47
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Тогда можно вызвать getMD5Stream() из DownloadFileCompleted() чтобы избавится от Application::DoEvents()...
TOM_RUS вне форума   Ответить с цитированием
Старый 29.06.2012, 22:30   #48
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
По умолчанию

кажется если убрать getMD5Stream() отсюда код который дальше просто продолжит выполнение;

Видимо придется переписывать
сама реализация такая .
красным выделил вызовы функций;
PHP код:
void Form1::DownloadInstall() 

а тут в самом конце вызов DownloadInstall и установка
__________________
Когда-нибудь на оффе поставят Mangos...
partizanes вне форума   Ответить с цитированием
Старый 29.06.2012, 23:47   #49
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

Не проще создать инсталятор для всего этого?

File->New Project->Other Project Files->Setup and Deployment->Visual Studio Installer->Setup Project...

http://msdn.microsoft.com/en-us/library/206sadcd

Последний раз редактировалось TOM_RUS; 30.06.2012 в 01:02.
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
partizanes (30.06.2012)
Старый 30.06.2012, 00:10   #50
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
По умолчанию

__________________
Когда-нибудь на оффе поставят Mangos...

Последний раз редактировалось partizanes; 30.06.2012 в 00:17.
partizanes вне форума   Ответить с цитированием
Старый 13.08.2012, 18:13   #51
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
По умолчанию

Доброго времени суток!

Подскажите ,столкнулся с фризом при использовании коннектора:
случай 1:
не доходим до блока finally
Код:
	try
	{
		conn->Open();
                return true;
	}

	catch (Exception^ exc)
	{
                return false;
	}

	finally
	{
		if (reader != nullptr)
			reader->Close();
	}
исправлял так :

Код:
	try
	{
		conn->Open();
		par = true;
	}

	catch (Exception^ exc)
	{
		MessageBox::Show("Exception: " + exc->Message);
		par = false;
	}

	finally
	{
		if (reader != nullptr)
			reader->Close();
	}

	return par;
проблема решена ;
теперь собственно вопрос:

есть функция которая делает запрос в базу:
блок чтения;
Код:
		while(reader->Read())
		{
			 check_turn(reader->GetString(0),reader->GetString(1),reader->GetDateTime(2));
		}
в функции check_turn
Код:
		while(reader->Read())
		{
			//THIS NEED CHECK FOR NULL
			sale = reader->GetString(0);
		}
получается мы имеем не закрытое соединение ?

p.s под фризом я имел ввиду в момент первого вызова фукнции ,приложения виснет от 3-10 секунд,даже бывает вываливается в таймаут . Последующие вызовы проходят мгновенно.


кхм пересмотрел всю свою писаннину и наверно понял что не в одном блоке финали не закрываю соединение

Код:
conn->Close();
правильно наверно так делать
Код:
		if(conn->State  == ConnectionState::Open)
			conn->Close();
__________________
Когда-нибудь на оффе поставят Mangos...

Последний раз редактировалось partizanes; 13.08.2012 в 18:49.
partizanes вне форума   Ответить с цитированием
Старый 14.11.2012, 22:11   #52
partizanes
Пользователь
 
Аватар для partizanes
 
Регистрация: 15.03.2010
Адрес: Беларусь,Витебск
Сообщений: 93
Сказал(а) спасибо: 97
Поблагодарили 36 раз(а) в 11 сообщениях
partizanes На верном пути
Отправить сообщение для partizanes с помощью ICQ Отправить сообщение для partizanes с помощью Skype™
По умолчанию

Код:
char buf[5];

GetPrivateProfileString("SETTINGS", "start_check","true",buf,sizeof(buf),SystemStringToChar(Environment::CurrentDirectory+"\\config.ini"));

if(CharToSystemString(buf) != "true")
         return;
подскажите как правильно проверять полученные bool значения из конфига?(или проверка строка == строка тоже возможна и не считается дурным тоном)
и как можно удалить всю информацию из массива,допустим что бы повторно запросить информацию из конфига о другом параметре в тот же массив;
__________________
Когда-нибудь на оффе поставят Mangos...

Последний раз редактировалось partizanes; 14.11.2012 в 22:18.
partizanes вне форума   Ответить с цитированием
Старый 16.11.2012, 22:59   #53
TOM_RUS
MaNGOS Dev
 
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
TOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небесTOM_RUS Как свет с небес
По умолчанию

А почему ini? Это же устаревший формат. Можно легко заменить на XML и использовать сериализацию. А если бы писали на C#, то вообще можно было бы использовать встроеную функцию Application Settings...

Я у себя в одной тулзе использовал что-то типа этого:
C#
Код:
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;

namespace stream.status
{
    [XmlRootAttribute("Config", Namespace = "")]
    public class Config
    {
        private const string FileName = "streams.xml";

        public bool Speech { get; set; }
        public bool OnlineOnly { get; set; }
        public int Interval { get; set; }

        // список стримов
        public readonly List<StreamInfo> Streams = new List<StreamInfo>();

        private static XmlSerializer Serializer = new XmlSerializer(typeof(Config), /*extra types*/ new Type[] { typeof(StreamInfo) });

        private static Config instance;

        private Config() { }

        /// <summary>
        /// Creates empty config with default settings
        /// </summary>
        private static void Init()
        {
            using (var fs = new FileStream(FileName, FileMode.Create))
            {
                Serializer.Serialize(fs, new Config());
            }
        }

        /// <summary>
        /// Saves current settings to a file
        /// </summary>
        public void Save()
        {
            using (var fs = new FileStream(FileName, FileMode.Create))
            {
                Serializer.Serialize(fs, instance);
            }
        }

        public static Config Instance
        {
            get
            {
                if (instance == null)
                {
                    if (!File.Exists(FileName))
                        Init();

                    using (var fs = new FileStream(FileName, FileMode.Open))
                    {
                        instance = (Config)Serializer.Deserialize(fs);
                    }
                }

                return instance;
            }
        }
    }
}
C++/CLI
Код:
#pragma once

using namespace System;
using namespace System::Collections::Generic;
using namespace System::IO;
using namespace System::Xml::Serialization;

public ref class StreamInfo
{
    public:
        StreamInfo() {}

        [XmlAttribute]
        Int32 TestValue;
};

[XmlRoot("Config", Namespace="")]
public ref class Config
{
    // Methods
    private:
        Config()
        {
            Streams = gcnew List<StreamInfo^>();
        }

        static void Init()
        {
            FileStream ^ fs = nullptr;
            try
            {
                fs = gcnew FileStream(FileName, FileMode::Create);
                Config::Serializer->Serialize(fs, gcnew Config());
            }
            finally
            {
                if(fs != nullptr)
                    delete fs;
            }
        }

    public:
        void Save()
        {
            FileStream ^ fs = nullptr;
            try
            {
                fs = gcnew FileStream(FileName, FileMode::Create);
                Config::Serializer->Serialize(fs, Config::instance);
            }
            finally
            {
                if(fs != nullptr)
                    delete fs;
            }
        }

    // Properties
    public:
        property static Config ^ Instance
        {
            Config ^ get()
            {
                if (Config::instance == nullptr)
                {
                    if (!File::Exists(FileName))
                    {
                        Config::Init();
                    }

                    FileStream ^ fs = nullptr;
                    try
                    {
                        fs = gcnew FileStream(FileName, FileMode::Open);
                        Config::instance = (Config^)(Config::Serializer->Deserialize(fs));
                    }
                    finally
                    {
                        if(fs != nullptr)
                            delete fs;
                    }
                }
                return Config::instance;
            }
        }

        property Int32 Interval
        {
            Int32 get()
            {
                return _interval;
            }
            void set(Int32 val)
            {
                _interval = val;
            }
        }

        property Boolean OnlineOnly
        {
            Boolean get()
            {
                return _onlineOnly;
            }
            void set(Boolean val)
            {
                _onlineOnly = val;
            }
        }

        property Boolean Speech
        {
            Boolean get()
            {
                return _speech;
            }
            void set(Boolean val)
            {
                _speech = val;
            }
        }

    // Fields
    private:
        literal String ^ FileName = "streams.xml";
        static Config ^ instance;
        static initonly XmlSerializer ^ Serializer = gcnew XmlSerializer(Config::typeid, gcnew array<Type ^, 1> { StreamInfo::typeid });
        Int32 _interval;
        Boolean _onlineOnly;
        Boolean _speech;
    public:
        initonly List<StreamInfo^> ^ Streams;
};
Использование:
Код:
var streamsCount = Config.Instance.Streams.Count;
...
useSpeechToolStripMenuItem.Checked = Config.Instance.Speech;
...
onlineOnlyToolStripMenuItem.Checked = Config.Instance.OnlineOnly;
...
timer1.Interval = Config.Instance.Interval;
...
Config.Instance.Interval = timer1.Interval;
Config.Instance.Save();
...
Config.Instance.Speech = useSpeechToolStripMenuItem.Checked;
Config.Instance.Save();
...
Config.Instance.OnlineOnly = onlineOnlyToolStripMenuItem.Checked;
Config.Instance.Save();
...
Config.Instance.Streams.Add(new StreamInfo(f.Id, f.StreamName, f.Type));
Config.Instance.Save();
на выходе получается вот такой XML файл:
Код:
<?xml version="1.0"?>
<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Streams>
    <StreamInfo Id="1" Name="Stream 1" Type="Own3d" />
    ...
    <StreamInfo Id="n" Name="Stream n" Type="Justin" />
  </Streams>
  <Speech>true</Speech>
  <OnlineOnly>false</OnlineOnly>
  <Interval>120000</Interval>
</Config>

Последний раз редактировалось TOM_RUS; 17.11.2012 в 02:27.
TOM_RUS вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
partizanes (17.11.2012)
Старый 24.12.2012, 12:19   #54
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

Извиняюсь за небольшой оффтоп, но не нашел тут подходящей темы, а новую создавать ради такого маленького вопроса не очень хочется. Собственно пытаюсь сделать аналог C# ReadUInt32 на C++.

Код:
     uint32 result = 0;

     for (int i = 0; i < 4; i++)
         result |= *ptr++ << (i * 8);
Верно я мыслю?
HuntsMan вне форума   Ответить с цитированием
Старый 24.12.2012, 13:01   #55
Sid
Ученый
 
Аватар для Sid
 
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
Sid Скоро придёт к известностиSid Скоро придёт к известности
По умолчанию

ReadUInt32 - откуда читаешь то? Например через reinterpret_cast

Код:
uint32 value = *reinterpret_cast<uint32*>(data);
При условии что data это char* длинной 4 байта.

Или допустим с сокета в Qt я считываю вот так

Код:
read((char*)&value, 4);
__________________
SpellWork Qt4
Sid вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
HuntsMan (24.12.2012)
Старый 24.12.2012, 13:37   #56
HuntsMan
Ученый
 
Аватар для HuntsMan
 
Регистрация: 19.12.2010
Сообщений: 221
Сказал(а) спасибо: 64
Поблагодарили 12 раз(а) в 9 сообщениях
Записей в дневнике: 2
HuntsMan На верном пути
По умолчанию

const char* ptr;
HuntsMan вне форума   Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вызов функции HuntsMan Языки программирования 1 02.01.2012 12:57
Импортируемые функции Йоха Копаем клиент 3 08.12.2011 16:53
Вопрос по функции php lovepsone Языки программирования 38 07.12.2011 22:09
[11691][patch] Опечатка в функции выбора difficulty спелла PSZ Принятые патчи 1 28.06.2011 11:26
Overhead в базовой функции SendPacket() xex Отвергнутые патчи 19 26.03.2011 12:47


Текущее время: 06:41. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot