1. C++ / Говнокод #6173

    +159

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    HMODULE nt=LoadLibrary("Ntdll.dll");
    PROCESS_BASIC_INFORMATION pbi={0};
    ZWQUERYINFORMATIONPROCESS _ZwQueryInformationProcess;
    _ZwQueryInformationProcess = (ZWQUERYINFORMATIONPROCESS)GetProcAddress(nt, "ZwQueryInformationProcess");
    DWORD rlg;
    SetLastError(0);
    _ZwQueryInformationProcess(divine,0,&pbi,sizeof(pbi),&rlg);
    printf("%d",GetLastError());

    источник: http://www.wasm.ru/forum/viewtopic.php?pid=426270#p426270

    ReL, 31 Марта 2011

    Комментарии (15)
  2. C++ / Говнокод #6171

    +162

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    QString SomeClass::newzipname (const QString serial) {
      QDateTime dt=QDateTime::currentDateTime();
      return serial
        +QString("%1%2%3%4%5%6")
        .arg (QString::number (dt.date().year()-2000), 2, '0')
        .arg (QString::number (dt.date().month()), 2, '0')
        .arg (QString::number (dt.date().day()), 2, '0')
        .arg (QString::number (dt.time().hour()), 2, '0')
        .arg (QString::number (dt.time().minute()), 2, '0')
        .arg (QString::number (dt.time().second()), 2, '0')
        +".zip";
    }

    panter_dsd, 31 Марта 2011

    Комментарии (4)
  3. C++ / Говнокод #6166

    +160

    1. 1
    2. 2
    3. 3
    private:
    private:
    	friend class boost::iterator_core_access;

    Никому не покажу своего друга-буста

    ClearHerdsman, 31 Марта 2011

    Комментарии (19)
  4. C++ / Говнокод #6165

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    enum EPlayerStat { ... };
    typedef std::pair<EPlayerStat, int> StatDelta;
    ...
    
    void GameClassT::showTooltipStats(const float2& pos, const std::vector<StatDelta>& statDeltas)
    {
    	//...
    
    	if (statDeltas.empty())
    		return;
    
    	// Выбираем тип баббла в зависимости от количества статов, которые в нём нужно отобразить.
    	// Баббл с последним статом "wish chance" выглядит немного не так, как остальные,
    	// но возможен (пока что) только для варианта с тремя статами.
    
    	Bubble* const bubblesNormal[] =
    	{
    		&m_bubbleTooltipStats1SE,
    		&m_bubbleTooltipStats2SE,
    		&m_bubbleTooltipStats3SE,
    		&m_bubbleTooltipStats4SE
    	};
    	Bubble* const bubblesWish[] =
    	{
    		nullptr,
    		nullptr,
    		&m_bubbleTooltipStats3SE_Wish,
    		nullptr
    	};
    
    	Bubble* const* const bubbles = (statDeltas.end() == std::find_if(statDeltas.begin(), statDeltas.end(),
    		[](const StatDelta& delta) -> bool { return delta.first == PS_WishChance; }))
    			? bubblesNormal : bubblesWish;
    	
    	Bubble& bubble = *bubbles[(statDeltas.size() <= ARRAY_SIZE(bubbles)) ? (statDeltas.size() - 1) : (ARRAY_SIZE(bubbles) - 1)];
    	if (&bubble == nullptr)
    	{
    		RZT_LOG_WARNING("Bubble with %d stats with wish chance is not supported!", statDeltas.size());
    		return;
    	}
    
    	// Настраиваем выбранный баббл.
    
    	//... (здесь вызываются всякие методы через ссылку bubble)
    }

    Внезапные изменения в спецификации такие внезапные.
    Мне всегда становится страшно, когда из-за них я начинаю рожать что-то подобное.

    Kirinyale, 31 Марта 2011

    Комментарии (13)
  5. C++ / Говнокод #6147

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    std::string get(const std::string& name) {
          NamedPropertyMap::iterator it = properties.find(name);
          if (it == properties.end())
            return false;
    
          std::string ret;
          it->second->Get(ret);
          return ret;
        }

    return false; компилится на ура в VS2008

    Aleskey, 30 Марта 2011

    Комментарии (7)
  6. C++ / Говнокод #6130

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    m_hSemaphore		= CreateSemaphore( NULL, 1, 1, NULL );
    ....
    
    void CTestGUIDlg::OnBnClickedButtonStartStream()
    {
    	WaitForSingleObject(m_hSemaphore, INFINITE);
    	if(m_ThreadHandle)
    	{
    		AfxMessageBox("Stop running stream!", MB_ICONEXCLAMATION);
    		return;
    	};
    
    	m_ThreadHandle	= NULL;
    	m_StreamType	= 1;
    	m_ThreadHandle =					(HANDLE)_beginthreadex(NULL,
    										0,
    										streamProcedure,
    										static_cast<LPVOID>( this ),
    										0,
    										NULL);	
    
    	if(!m_ThreadHandle) 
    	{
    		m_StreamType	= 0;
    	}
    	UpdateButtons();
    	ReleaseSemaphore(m_hSemaphore, 1, NULL);
    }

    классика жанра

    Aleskey, 30 Марта 2011

    Комментарии (6)
  7. C++ / Говнокод #6129

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    class SomeClass
    {
    public:
    	__declspec(dllexport) SomeClass(UINT i_Width, UINT i_Height, UINT i_Lines, float i_Result, bool i_bAutoFill = false, и т.д. еще штук 5);
    	__declspec(dllexport) SomeClass::~SomeClass();
    
    	__declspec(dllexport) void setCallbackFunction(void	(*i_pCallbackFunction)(SomeClass* i_pSomeClass)) { m_pCallbackFunction = i_pCallbackFunction; };	
    	__declspec(dllexport) bool isFinished() { return m_bIsFinished; };
    	__declspec(dllexport) void clear() { m_ResultData.clear(); };
    	__declspec(dllexport) bool save(const char* i_sFilename);
    
    	...
    
    private:	
    	bool createThread();
    	void initWork();	
    	void loopWork();
    	void stepWork();
    	void exitWork();
    
    	static UINT WINAPI workProc(LPVOID lpContext);
    
    	inline bool someInlineFunction(UINT i_Index);
    	...
    	
    private:
    	HANDLE				m_ThreadHandle;
    	bool				m_bIsFinished;
    	bool				m_bThreadStopped;
    	bool				m_bThreadClosed;
    	vector<SomeType>	m_a...; 
    	string				m_sFilename;
    	
    	void				(*m_pCallbackFunction)(SomeClass* i_pSomeClass);
    	
    	...
    };

    Это краткий пересказ того, что шло вместе с DLL, только длиннее и с комментариями к каждой строке и доксигеновской докой!

    Aleskey, 30 Марта 2011

    Комментарии (6)
  8. C++ / Говнокод #6128

    +161

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT(_WAIT_EXPR_, _TIMEOUT_)	TWAIT_EX(_WAIT_EXPR_, _TIMEOUT_, 0)
    #define TWAIT_(_WAIT_EXPR_, _TIMEOUT_)	TWAIT_EX_(_WAIT_EXPR_, _TIMEOUT_, 0)
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_DECL_VARS														\
    	DWORD TWAIT_START = GetTickCount();										\
    	bool TWAIT_RET = true;													
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_EX(_WAIT_EXPR_, _TIMEOUT_, _ABORT_)							\
    	DWORD TWAIT_START = GetTickCount();										\
    	bool TWAIT_RET = true;													\
    	do {ProcessMessage(1);													\
    		TWAIT_RET = GetTickCount() - TWAIT_START < (DWORD)(_TIMEOUT_);		\
    		if( !TWAIT_RET ) break;												\
    		if( _ABORT_ != 0 ) { TWAIT_RET = false; break; }					\
    	} while( (_WAIT_EXPR_) == 0 );
    /////////////////////////////////////////////////////////////////////////////
    #define TWAIT_EX_(_WAIT_EXPR_, _TIMEOUT_, _ABORT_)							\
    	TWAIT_START = GetTickCount();											\
    	TWAIT_RET = true;														\
    	do {ProcessMessage(1);													\
    		TWAIT_RET = GetTickCount() - TWAIT_START < (DWORD)(_TIMEOUT_);		\
    		if( !TWAIT_RET ) break;												\
    		if( _ABORT_ != 0 ) { TWAIT_RET = false; break; }					\
    	} while( (_WAIT_EXPR_) == 0 );

    lambdas, functors... макрос - это наше все... а ProcessMessage(1) тоже радует.

    Aleskey, 30 Марта 2011

    Комментарии (4)
  9. C++ / Говнокод #6126

    +179

    1. 1
    2. 2
    3. 3
    4. 4
    ClassName::~ClassName()
        {
        memset( this, 0, sizeof( *this ) );
        }

    Написано коллегой из теплой страны. Случайно нашел в коде :)

    Mintel, 29 Марта 2011

    Комментарии (8)
  10. C++ / Говнокод #6119

    +174

    1. 1
    (addNewItem) ? (isVideoAudioAttached = true) : (isVideoAudioAttached = false);

    addNewItem и isVideoAudioAttached типа bool

    psl, 29 Марта 2011

    Комментарии (3)