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

    +53

    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
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    BOOL IsNameInExpression(PCWSTR Expression, PCWSTR Name, DWORD len)
    {
    	WCHAR c, b;
    
    	while (c = *Expression++) 
    	{
    		if (c == L'*') 
    		{
    __loop:
    			switch (*Expression)
    			{
    			case '*':
    				Expression++;
    				goto __loop;
    			case 0:
    				return TRUE;
    			}
    
    			if (len)
    			{
    				do 
    				{
    					if (IsNameInExpression(Expression, Name++, len--)) return TRUE;
    				} while (len);
    			}
    
    			return FALSE;
    		}
    
    		if (!len--)
    		{
    			return FALSE;
    		}
    
    		b = *Name++;
    
    		if (c != L'?' && b != c) 
    		{
    			return FALSE;
    		} 
    	}
    
    	return !len;
    }
    
    BOOL IsNameInExpression(PCWSTR Expression, PUNICODE_STRING Name)
    {
    	RtlUpcaseUnicodeString(Name, Name, FALSE);
    	return IsNameInExpression(Expression, Name->Buffer, Name->Length >> 1);
    }

    zhukas, 28 Ноября 2014

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

    +51

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    QDir startupFolder = QDir(AppSettings->value("SoftStartupFolder").toString());
    if (!startupFolder.isAbsolute())
    {
        startupFolder.setPath(QCoreApplication::applicationDirPath()+QDir::separator()+AppSettings->value("SoftStartupFolder").toString());
        startupFolder = QDir(startupFolder.absolutePath());
    }

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

    kin63camapa, 28 Ноября 2014

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

    +55

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    QString GetVer(QString FileName)
    {
        //многакода
        FileName.clear(); //теперь это версия %)
        QTextStream(&FileName) << HIWORD(fi->dwFileVersionMS) << "." << LOWORD(fi->dwFileVersionMS) << "." << HIWORD(fi->dwFileVersionLS) << "." << LOWORD(fi->dwFileVersionLS);
        return FileName;
    }

    кому-то лень было создавать переменную

    kin63camapa, 27 Ноября 2014

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

    +50

    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
    switch (player->collision(pos, getRadius()))
    		{
    		case SIDE_UP:
    			ySpeed = -player->baseSpeed.y + player->currentSpeed.y;
    			xSpeed = xSpeed - player->currentSpeed.x;
    			if (abs(xSpeed) > maxXSpeed)
    				xSpeed = maxXSpeed * (xSpeed < 0 ? -1 : 1);
    			break;
    		case SIDE_DOWN:
    			setPosition(getPosition().x, getPosition().y - getRadius() * 2 - 20);
    			ySpeed = -player->baseCornerSpeed.y - player->currentSpeed.y;
    			xSpeed = xSpeed - player->currentSpeed.x; 
    			if (abs(xSpeed) > maxXSpeed)
    				xSpeed = maxXSpeed * (xSpeed < 0 ? -1 : 1);
    			break;
    		case SIDE_RIGHT:
    		case SIDE_LEFT:
    			xSpeed = -xSpeed + player->currentSpeed.x;
    			break;
    		case CORNER_LEFT_UP:
    			ySpeed = -player->baseCornerSpeed.y;
    			xSpeed = -player->baseCornerSpeed.x;
    			break;
    		case CORNER_RIGHT_UP:
    			ySpeed = -player->baseCornerSpeed.y;
    			xSpeed = player->baseCornerSpeed.x;
    			break;
    		case CORNER_RIGHT_DOWN:
    			ySpeed = player->baseCornerSpeed.y;
    			xSpeed = player->baseCornerSpeed.x;
    			break;
    		case CORNER_LEFT_DOWN:
    			ySpeed = player->baseCornerSpeed.y;
    			xSpeed = -player->baseCornerSpeed.x;
    			break;
    		}

    Только велосипедный Collision detection, только хардкор!

    gost, 27 Ноября 2014

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

    +50

    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
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    size_t __stdcall ZAsmView::addrSet(DIS const *pDis, unsigned __int64 Va, wchar_t * buf, size_t cb, unsigned __int64 * displacement)
    {
    	FORMATDATA* pf = (FORMATDATA*)pDis->PvClient();
    	size_t fixupLen = pf->fixupLen;
    	pf->fixupLen = 0;
    	*displacement = 0;
    	BOOL f = TRUE;
    	PVOID _Va = (PVOID)Va;
    	ZDbgDoc* pDoc = pf->pDoc;
    	
    __loop:
    	if (PCSTR Name = pDoc->getNameByVa((PVOID)Va))
    	{
    		char cc[256];
    		PCSTR fName = unDNameEx(cc, Name, sizeof(cc), UNDNAME_NAME_ONLY);
    		int len = _snwprintf(buf, cb, L"%S(%p)", fName, Va);
    		if (len < 0)
    		{
    			buf[len = (DWORD)cb - 1] = 0;
    		}
    		else
    		{
    			buf[0] |= 0x4000, buf[len - 3 - 2*sizeof(PVOID)] |= 0x8000;
    		}
    		return len;
    	}
    
    	if (f && 2*sizeof(PVOID)+2<cb)
    	{
    		switch (pDis->Trmta())
    		{
    		case DIS::a_jmp_u_2:
    		case DIS::a_jmp_u_5:
    		case DIS::a_jmp_c_2:
    		case DIS::a_jmp_c_6:
    			_snwprintf(buf, cb, L"%p %c", (PVOID)Va, Va > pf->pLI->Va ? 0x2193 : 0x2191);
    			buf[0] |= 0x4000, buf[2*sizeof(PVOID)-1] |= 0x8000;
    			return 2*sizeof(PVOID)+2;
    		}
    	}
    
    	if (fixupLen)
    	{
    		if (0 <= pDoc->Read((PVOID)Va, &Va, sizeof(PVOID)))
    		{
    			fixupLen = 0, f = FALSE;
    			goto __loop;
    		}
    	}
    
    	if (2*sizeof(PVOID)+2<cb && pDoc->getDllByVaNoRef(_Va))
    	{
    		_snwprintf(buf, cb, L"%p", _Va);
    		buf[0] |= 0x4000, buf[2*sizeof(PVOID)-1] |= 0x8000;
    		return 2*sizeof(PVOID);
    	}
    
    	return 0;
    }

    zhukas, 27 Ноября 2014

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

    +55

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    QByteArray ba;
    char x;
    
    x = 0x05;
    ba.append (&x, sizeof (x));

    Qt. Продолжаем мучить QByteArray :)

    ealx, 26 Ноября 2014

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

    +50

    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
    char parser_msg(char *data, char size)
    {
        //<...>
        QByteArray bt;
        //<...>    
        x=(char *) malloc(size);
        bt.clear();
    
        for (i=0; i<size; i++) {
            x[i]=*data;
            bt.append(*data);
            *data++;
        }
    
        printf("Data parser! >> '%s'\n", bt.toHex().constData());
    
        if (x[0]==0x06) {
           //<...>
        }
    
        if (x[0]==...) {
           //<...>   
        }
    
       //<...>
    }

    Разбор команд из COM-порта. Используется Qt. QByteArray, кстати, заведен здесь только ради дебаг-принта.
    При вызове функции в кач. data передается указатель, возвращаемый data() другого байтаррэя, живущего на стеке.

    ealx, 26 Ноября 2014

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

    +54

    1. 1
    virtual bool    IsUnlockedAll(){bool temp = false;return temp^temp;};

    Код с боевого проекта. Комментариев не будет.

    DlangGovno, 26 Ноября 2014

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

    +49

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for (int i = 0; i <= 10000; i++)
    {
    if (a[i]=='a')
    a[i] == "000";
    continue;
    }

    Цикл, который в строке a меняет все символы 'a' на три ноля. Говнолабка одногруппницы.

    b2soft, 25 Ноября 2014

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

    +57

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for (i = MAX_PATH; 5; i--){
        if (CurProfileF[i] == 't' && CurProfileF[i-3] == '.'){
            i = i-3;
            break;
        }
    }

    http://trac.miranda-ng.org/browser/trunk/protocols/Xfire/src/variables.cpp?rev=5315#L194

    roman-kashitsyn, 25 Ноября 2014

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