1. 1C / Говнокод #7819

    −129

    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
    Функция ВыделитьАртикул(А) Экспорт
    	Перем СтрВспом, Инд;
    	
    	Инд = 1;
    	СтрВспом = "";
    	
    	Пока Инд <= СтрДлина(А) Цикл
    		Если (Сред(А,Инд,1)="0") ИЛИ (Сред(А,Инд,1)="1") ИЛИ
    			 (Сред(А,Инд,1)="2") ИЛИ (Сред(А,Инд,1)="3") ИЛИ
    			 (Сред(А,Инд,1)="4") ИЛИ (Сред(А,Инд,1)="5") ИЛИ
    			 (Сред(А,Инд,1)="6") ИЛИ (Сред(А,Инд,1)="7") ИЛИ
    			 (Сред(А,Инд,1)="8") ИЛИ (Сред(А,Инд,1)="9") ИЛИ 
    			 (Сред(А,Инд,1)="/") ИЛИ (Сред(А,Инд,1)="-") Тогда
    			СтрВспом = СтрВспом + Сред(А, Инд, 1);
    			Инд = Инд + 1;
    		Иначе
    			Прервать;
    		КонецЕсли;
    	КонецЦикла;
    	Возврат СтрВспом;
    КонецФункции

    Нашел у клиента, когда рефакорил код конфы. Страшно подумать, если придется выделять еще с десяток символов...

    YouAreEmpty, 09 Сентября 2011

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

    +160

    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
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    HRESULT GetOutlookVersionString(LPSTR* ppszVer, BOOL* pf64Bit)
    {
        HRESULT hr = E_FAIL;
        LPSTR pszTempPath = NULL;
        LPSTR pszTempVer = NULL;
        TCHAR pszaOutlookQualifiedComponents[][MAX_PATH] = {
            TEXT("{1E77DE88-BCAB-4C37-B9E5-073AF52DFD7A}"), // Outlook 2010
            TEXT("{24AAE126-0911-478F-A019-07B875EB9996}"), // Outlook 2007
            TEXT("{BC174BAD-2F53-4855-A1D5-0D575C19B1EA}")  // Outlook 2003
        };
    
        int nOutlookQualifiedComponents = _countof(pszaOutlookQualifiedComponents);
        int i = 0;
        DWORD dwValueBuf = 0;
        UINT ret = 0;
    
        *pf64Bit = FALSE;
    
        for (i = 0; i < nOutlookQualifiedComponents; i++)
        {
            ret = MsiProvideQualifiedComponent(
                pszaOutlookQualifiedComponents[i],
                TEXT("outlook.x64.exe"),
                (DWORD) INSTALLMODE_DEFAULT,
                NULL,
                &dwValueBuf);
            if (ERROR_SUCCESS == ret) break;
        }
    
        if (ret != ERROR_SUCCESS)
        {
            ret = MsiProvideQualifiedComponent(
                pszaOutlookQualifiedComponents[i],
                TEXT("outlook.exe"),
                (DWORD) INSTALLMODE_DEFAULT,
                NULL,
                &dwValueBuf);
        }
        else
        {
            *pf64Bit = TRUE;
        }
    
        if (ret == ERROR_SUCCESS)
        {
            dwValueBuf += 1;
            pszTempPath = (LPSTR) malloc(dwValueBuf * sizeof(TCHAR));
    
            if (pszTempPath != NULL)
            {
                if ((ret = MsiProvideQualifiedComponent(
                    pszaOutlookQualifiedComponents[i],
                    TEXT("outlook.exe"),
                    (DWORD) INSTALLMODE_EXISTING,
                    pszTempPath,
                    &dwValueBuf)) != ERROR_SUCCESS)
                {
                    goto Error;
                }
    
                pszTempVer = (LPSTR) malloc(MAX_PATH * sizeof(TCHAR));
                dwValueBuf = MAX_PATH;
                if ((ret = MsiGetFileVersion(pszTempPath,
                    pszTempVer,
                    &dwValueBuf,
                    NULL,
                    NULL))!= ERROR_SUCCESS)
                {
                    goto Error;    
                }
                *ppszVer = pszTempVer;
                pszTempVer = NULL;
                hr = S_OK;
            }
        }
    
    Error:
        free(pszTempVer);
        free(pszTempPath);
        return hr;
    }

    Говнокод от САМОГО Билли... 21 век на дворе, а у нас в C++ коде goto Error написано (точнее - накакано).
    Источник - http://msdn.microsoft.com/en-us/library/dd941331.aspx

    kVolt, 09 Сентября 2011

    Комментарии (64)
  3. Pascal / Говнокод #7817

    +90

    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
    Procedure TfMain.CheckButtonsStatus;
    begin
      // Если есть кто-то в персональной очереди, то возобновить активна
      if (dMain.PersonalQueueQuery.RecordCount > 0) then
        TImageButton(mButtons[6]).mlabel.Enabled := true
      else
        TImageButton(mButtons[6]).mlabel.Enabled := False;
    
      // 'приглашен', 3, 'оповещен', 4, 'оповещен', 5, 'прием начат')
      if (dMain.StateQuery.FieldValues['state'] = 'свободно') then
      begin
        TImageButton(mButtons[0]).mlabel.Enabled := False;
        TImageButton(mButtons[1]).mlabel.Enabled := False;
        if dMain.CommonQueueQuery.RecordCount > 0 then
          TImageButton(mButtons[2]).mlabel.Enabled := true
        else
          TImageButton(mButtons[2]).mlabel.Enabled := False;
    
        TImageButton(mButtons[3]).mlabel.Enabled := False;
        TImageButton(mButtons[4]).mlabel.Enabled := False;
        TImageButton(mButtons[5]).mlabel.Enabled := False;
        OperPopupMenu.Items[0].Enabled := False;
      end;
    
      if (dMain.StateQuery.FieldValues['state'] = 'приглашен') or
        (dMain.StateQuery.FieldValues['state'] = 'оповещен') then
      begin
        TImageButton(mButtons[0]).mlabel.Enabled := true;
        TImageButton(mButtons[1]).mlabel.Enabled := False;
        TImageButton(mButtons[2]).mlabel.Enabled := False;
        TImageButton(mButtons[3]).mlabel.Enabled := true;
        TImageButton(mButtons[4]).mlabel.Enabled := False;
        TImageButton(mButtons[5]).mlabel.Enabled := False;
        TImageButton(mButtons[6]).mlabel.Enabled := False;
        if (dMain.StateQuery.FieldValues['state'] = 'приглашен') then
          OperPopupMenu.Items[0].Enabled := False
        else
          OperPopupMenu.Items[0].Enabled := true;
      end;
    
      if (dMain.StateQuery.FieldValues['state'] = 'прием начат') then
      begin
        TImageButton(mButtons[0]).mlabel.Enabled := False;
        TImageButton(mButtons[1]).mlabel.Enabled := true;
        TImageButton(mButtons[2]).mlabel.Enabled := False;
        TImageButton(mButtons[3]).mlabel.Enabled := False;
        TImageButton(mButtons[4]).mlabel.Enabled := true;
        TImageButton(mButtons[5]).mlabel.Enabled := true;
        TImageButton(mButtons[6]).mlabel.Enabled := False;
        OperPopupMenu.Items[0].Enabled := False;
      end;
    end;

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

    chaoswithin, 09 Сентября 2011

    Комментарии (37)
  4. PHP / Говнокод #7816

    +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
    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
    /*
    Содержимое news.xml
    <?xml version="1.0" encoding="utf-8"?>
     <news>
       <item>
         <title>Новые поступления</title>
         <text>
         This program is free software;
         </text>
         <date>13:30 - 12.08.2004</date>
       </item>
       <item>
         <title>ERERER поступления</title>
         <text>
           p pppppppppppppppp p p pp  p pppppppppppppppppp pppppppppppppppppppppp
         </text>
         <date>18:30 - 12.08.2004</date>
       </item>
     </news>
    */
    
    
     $file = fopen("news.xml","r");
     fseek($file, 47, SEEK_SET);
     $other = fread($file, 900000);
     fseek($file, 0, SEEK_SET);
     $prev = fread($file, 47);
     fclose($file);
     $file = fopen("news.xml","w");
    //...
    $text1 = "$text";
    $title = "$h1";
    $date = "$dates";
    echo $other;
    $all = $prev.'<item><title>'.$title.'</title><text>'.$text1.'</text><date>'.$date.'</date></item>'.$other;
    $buff = fputs ($file, $all);
    print $buff;

    Оригинальный способ дописывать новую новость в xml файл.
    Данный способ уже не кошерный:
    $doc = new DOMDocument();
    $doc->load($xml);
    $item = $doc->createElement('item');
    $news = $doc>getElementsByTagName('news')->item(0);
    $news->appendChild($item);
    $doc->save($xml);

    MoLe-X, 09 Сентября 2011

    Комментарии (7)
  5. PHP / Говнокод #7815

    +154

    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
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    <?php
    function import_var($name,$source,$type,$maxlen=0) {
    	$retarr=array();
    	if(is_array($name)) { // если нужно обработать массив с именами
    		foreach($name as $v) {
    			$retarr[$v] = import_var($v,$source,$type,$maxlen);
    			// рекурсивно запускаем себя же
    		}
    	if(sizeof($retarr)>0) return $retarr; // возвращаем массив
    	}
    	// если нужно обработать одну переменную
    	switch($source) {
    		case 'G':
    			if (isset($_GET[$name])) {
    				$var=$_GET[$name];  // из GET
    			}
    		break;
    		case 'P':
    			if (isset($_POST[$name])) {
    				$var=$_POST[$name];  // из POST
    			}
    		break;
    		case 'C':
    			if (isset($_COOKIE[$name])) {
    				$var=$_COOKIE[$name];  // из Cookie
    			}
    		break;
    	}
    
    	if(!isset($var)) return false; // если переменная существует
    
    	if(is_array($var)) return false; // и если это не массив...
    
    	if(get_magic_quotes_gpc()) $var = stripslashes($var);
    	// убираем лишние бэкслэши
    
    	if(empty($var)) return false; // если переменная пуста
    
    	if ($maxlen>0) $var = substr($var,0,$maxlen); //обрубаем лишнее
    
    	switch($type) { // теперь обрабатываем в соответствии с типом
    		case 'INT' : // число integer
    			return is_integer($var) ? $var : intval($var);
    		break;
    		case 'NUM' : // число integer или float
    			return is_numeric($var) ? $var : false;
    		break;
    		case 'HTML' : // текст, в котором могут содержаться тэги
    			return trim(htmlspecialchars($var));
    		break;
    		case 'SQL' : // строка, которая попадет в SQL-запрос
    			return mysql_real_escape_string(htmlspecialchars($var));
    		break;
    		case 'MAIL'	: // email-адрес
    			return preg_match('/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{2,4}$/',$var) ? $var : false;
    		break;
    		case 'ALPHA' : // только буквенные символы
    			return preg_match("/^[а-яА-ЯёЁa-zA-Z]+$/",$var) ? $var : false;
    		break;
    		case 'ALPHANUM' : // числовые и буквенные символы
    			return preg_match("/^[а-яА-ЯёЁa-zA-Z0-9]+$/",$var) ? $var : false;
    		break;
    		case 'MD5' : // md5-хэш
    			return preg_match("/^[a-fA-F0-9]{32}+$/",$var) ? $var : false;
    		break;
    		case 'SHA1' : // sha1-хэш
    			return preg_match("/^[a-fA-F0-9]{40}+$/",$var) ? $var : false;
    		break;
    		case 'BOOL': // булева величина
    			return ($var=="1" || $var=="true" || $var=="on") ? true : false;
    		break;
    	}
    }
    ?>

    http://raz0r.name/releases/funkciya-dlya-obrabotki-vxodyashhix-dannyx/

    sectus, 09 Сентября 2011

    Комментарии (16)
  6. PHP / Говнокод #7814

    +161

    1. 1
    $period = in_array($bullRegionId,array_keys($periods)) ? $periods[$bullRegionId]['text'] : $periods['default']['text'];

    Интересна сама проверка на существование ключа, не правда ли? :-)
    Код мой. Коллега учуял, что от него несколько плохо пахнет и предложил запостить сюда))

    Nemoden, 09 Сентября 2011

    Комментарии (27)
  7. PHP / Говнокод #7813

    +153

    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
    function resetIsetSorting()
    	{
    		$db = 'i_set';
    		$co = -1;
    		$q = $this->db->get($db);
    		$r = $q->result();
    		foreach($r as $row)
    		{
    			$co++;
    			$upd['sort'] = $co;
    			$this->db->where('id_set', $row->id_set); 
    			$this->db->update($db, $upd);	
    		}
    	}
    	function isetSortExchange($sort, $canBeSort)
    	{
    		$db = 'i_set';
    		$bigNumber = 1470000;
    		$this->db->where('sort', $canBeSort);
    		$q = $this->db->get($db);
    		if ($q->num_rows() == 1)
    		{
    			$upd['sort'] = $bigNumber;
    			$this->db->where('sort', $canBeSort); 
    			$this->db->update($db, $upd);	
    			//
    			$upd['sort'] = $canBeSort;
    			$this->db->where('sort', $sort); 
    			$this->db->update($db, $upd);
    			//
    			$upd['sort'] = $sort;
    			$this->db->where('sort', $bigNumber); 
    			$this->db->update($db, $upd);
    		}
    	}

    Первая функция призвана обновить поле sort на уникальные последовательные значение. Сначала хотел провернуть такое дело на SQL в PHPmyADMIN, но мозгов моих оказалось мало, и я сделал это на CodeIgniter. Говнокод ли это?

    Вторая функция призвана для обмена значениями полей sort. Это нужно для сортировки чего либо в баз. Чутьё мне подсказывает что это можно проделать каким-то белее правильным путём, без использования $bigNumber = 1470000; (а вдруг количество строк достигнет этого числа??!!). Говнокод ли это?

    Всё рабочее, только что проверил. Свежий код, только что написан!

    increazon, 08 Сентября 2011

    Комментарии (4)
  8. JavaScript / Говнокод #7812

    +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
    <select onchange="goTo();" id="navSelect">
    <option value="/way_to_hell/">Вопросы-ответы</option>
    .
    .
    .
    </select>
    
    <script>
    function goTo()
    {
      var objSel = document.getElementById("navSelect");
      window.location = objSel.options[objSel.selectedIndex].value;
    }
    
    </script>
    
    
    
    //можно вообще вот так:
    <select onchange="window.location = this.options[this.selectedIndex].value">

    dr_fet, 08 Сентября 2011

    Комментарии (12)
  9. PHP / Говнокод #7811

    +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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    function validemail($email){
    
     if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email))
    
     return false;
    
    
    
     $email_array = explode("@", $email);
    
     $local_array = explode(".", $email_array[0]);
    
     for ($i = 0; $i < sizeof($local_array); $i++) {
    
      if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i]))
    
      return false;
    
     }

    jQuery, 08 Сентября 2011

    Комментарии (42)
  10. PHP / Говнокод #7810

    +173

    1. 1
    define("RANDOM_NUM", rand(0, 10000000));

    поясню: кодер думал, что каждый раз будет вызываться функция и генерить новое число, т.к. в коде далее идет ее использование как уникального идентификатора. Скорее всего, это один из первых скриптов того, кто писал.

    jokz, 08 Сентября 2011

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