1. VisualBasic / Говнокод #1206

    −276.9

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Private Function GetDirection(ByVal sort As String)
            If sort.IndexOf("DESC") > 0 Then
                sort = sort.Replace("DESC", "ASC")
            Else
                sort = sort & " DESC "
            End If
            Return ""
        End Function

    Даже придумывать ничего не пришлось.

    guest, 16 Июня 2009

    Комментарии (0)
  2. VisualBasic / Говнокод #1100

    −329.1

    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
    Public Function random()
    Randomize
    random = Left(Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1) + _
    Mid("0123456789abcdefghijklmnopqrstuvwxyz", 36 * Rnd() + 1, 1), 10)
    End Function

    Функция генерации случайного набора символов от модератора форума Access Бурундука на http://www.cyberforum.ru/

    guest, 28 Мая 2009

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

    −130

    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
    i = 2
    
                    X = "blank"
                    index = ""
                    qty = "1"
    
                    For Each Z In sContents
                        If (Z.StartsWith("1") Or Z.StartsWith("2") Or Z.StartsWith("3") Or Z.StartsWith("4") Or Z.StartsWith("5") Or Z.StartsWith("6") Or Z.StartsWith("7") Or Z.StartsWith("8") Or Z.StartsWith("9")) Then
                            Line = Z.Split("|")
    
                            If Not Line(0).Contains(".") Then
                                index = Line(0)
                                qty = 1
                            End If
    
                            If Line(1).StartsWith("ID") Then
                                X = Line(3).Substring(15)
                                qty = Line(4)
                            Else
                                sheet.Cells(i, 1) = Line(2)
                                sheet.Cells(i, 2) = Line(3)
    
                                If Line(2) = X Then
                                    sheet.Range("B" & i).Font.Bold = True
                                Else
                                    If Line(0).StartsWith(index & ".") Then
                                        sheet.Range("B" & i).IndentLevel() = 1
                                    End If
                                End If
    
                                If Not Line(0).Contains(".") Then
                                    sheet.Range("B" & i).Font.Bold = True
                                End If
    
                                If Line(5) = "N/A" Then
                                    sheet.Cells(i, 3) = 0
                                Else
                                    sheet.Cells(i, 3) = Line(5)
                                End If
    
                                sheet.Range("C" & i).NumberFormat = "[$$-2409]#,##0.00"
    
                                sheet.Cells(i, 4) = Line(7)
    
                                If qty > 1 Then
                                    sheet.Cells(i, 5) = Line(4) * qty
                                Else
                                    sheet.Cells(i, 5) = Line(4)
                                End If
    
                                sheet.Cells(i, 6) = "=E" & i & "*C" & i
    
                                sheet.Range("F" & i).NumberFormat = "[$$-2409]#,##0.00"
    
                                sheet.Range("D" & i, "E" & i).HorizontalAlignment = Excel.Constants.xlCenter
                                sheet.Range("A" & i, "F" & i).Font.Size = 10
                                sheet.Range("A" & i, "F" & i).Borders.LineStyle = Excel.Constants.xlSolid
    
                                i = i + 1
                            End If
                        End If
    
                    Next Z

    чем не говнокод?
    работает, хуле :)

    guest, 21 Апреля 2009

    Комментарии (1)
  4. VisualBasic / Говнокод #873

    −140

    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
    Public Function fRoundSumma(pDbl As Double) As Double
     On Error Resume Next
     Dim vStrSum As String
     If vFieldRoundSummuDoInt Then
        vStrSum = str(pDbl)
         If InStr(1, vStrSum, ".5") > 0 Then
            If pDbl < 0 Then
               fRoundSumma = Abs(Fix(pDbl)) + 1
               fRoundSumma = fRoundSumma * (-1)
              Else
               fRoundSumma = Fix(pDbl) + 1
            End If
           Else
            fRoundSumma = Round(pDbl, 0)
         End If
       Else
        fRoundSumma = Round(pDbl, vFieldRoundDo)
     End If
    End Function

    Такое забавное округление. Из коммерческого проекта :)

    guest, 15 Апреля 2009

    Комментарии (1)
  5. VisualBasic / Говнокод #867

    −316.8

    1. 1
    2. 2
    3. 3
    If CLng(Text1.Text)<400 and CLng(Text1.Text)>400 then
       Text3.Text="17"
    End if

    и почему условие не проходит?

    guest, 14 Апреля 2009

    Комментарии (14)
  6. VisualBasic / Говнокод #837

    −276.6

    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
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    Function ShowAddressBook() As String
    On Error GoTo ErrorHandler
    
        Dim miTempItem As MailItem
        Dim inTempInspector As Inspector
        Dim Pomoechka As MAPIFolder
        Dim objNS As outlook.NameSpace
        
        
        ' Загружаем шаблон формы онового сообщения
        ' на нём есть нужная кнопка
        Dim Reg As New CReg
    10    Reg.m_MainKey = "Software\Content Manager\MS_OUTLOOK"
        
    20    Set miTempItem = Application.CreateItemFromTemplate(Reg.GetValue("path") & "\crutch.oft")
    30    Set inTempInspector = miTempItem.GetInspector
        
    32      miTempItem.UserProperties.Add("TempItemForAddressBook", olYesNo) = True
                 
        ' Убираем инспектор с глаз долой
    40    inTempInspector.Left = -20000
    50    inTempInspector.Top = -20000
    '51    inTempInspector.Width = 0
    '52    inTempInspector.Height = 0
        
        ' пока инспектор не покажеться адресбук из него не выдавишь
    60    inTempInspector.Activate
        ' если до вызова адресбука пользователь работал
        ' с развёрнутым на весь экран письмом - то хрен мы его куда свинем
        ' нужно, поэтому, вернуть нормальное состояние
    70    inTempInspector.WindowState = olNormalWindow
    
        ' правда, это в некоторых случаях моргает - но поставить olonormalWindow
        ' до того как инспектор показан - нельзя.
        ' рахзвёрнутость ил не развёрнутость задаёться в реестре по пути
        ' HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Outlook\Message\Frame
        ' там храниться REG_BINARY и внём меняетсья 0xB байт либо на 3 либо на 1
        
        ' подгрузили всё что надо - вызываем саму книгу
    'НОВАЯ ВЕРСИЯ
    80 inTempInspector.CommandBars.FindControl(Id:=353).Execute
        Dim strBuff As String
        ' Пока не сделаю сейв, поле TO через мапи будет не доступным
    90    miTempItem.save
        ' получаю поле ТО через MAPI
        ' если попытаться взять его на прямую - то аутлук будет ругатся
        ' своим ёбанным диалогом безопасности
        
    100    strBuff = GetToField(miTempItem)
        
        ' закрываем итемку
    110    miTempItem.Close olDiscard
        
        
        ' Теперь, из-за того что вызывали метод save итемка лежит в папке
        ' с черновиами, нахер она там не сдалась - нужно удалять
        ' если её просто удалить .delete то она передвиниться в папку
        ' с удалёнными письмами - тоже нафик не надо
        ' поэтому, сначала переносим её в эту папку самостоятельно
        ' и от туда вызываем .delete - письмо исчезает
        
        ' Получаем доступ к папке с удалёнными письмами
        
    120    Set objNS = Application.GetNamespace("MAPI")
        ' вот тут она лежит
    130    Set Pomoechka = objNS.GetDefaultFolder(olFolderDeletedItems)
    
        ' перемещаем туда письмецо
    140    miTempItem.Move Pomoechka ' хотя можно и просто     miTempItem.Delete
    
        ' теперь берём последнее письмо из помойки - это наше
        ' и удаляем его от туда
    150    Pomoechka.Items(Pomoechka.Items.Count).Delete
        ' Теперь письма нету
        
        
        ShowAddressBook = strBuff
    
    KillObjects:
        ' Всё подчистим
    160   Set miTempItem = Nothing
    170   Set inTempInspector = Nothing
    180   Set Pomoechka = Nothing
    190   Set objNS = Nothing
    200   Set Reg = Nothing
            Exit Function
    ErrorHandler:
            subGlobalErrorHandler Err.Description, Err.number, Erl, "ShowAddressBook"
            Resume KillObjects
        
    End Function

    EPIC FAIL

    Вызов диалога адресной книги аутлука, и получение выбранных в ней адресов.

    guest, 09 Апреля 2009

    Комментарии (4)
  7. VisualBasic / Говнокод #718

    −334

    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
    DECLARE FUNCTION ping$ (host$)
    TYPE HostData
      ip AS STRING * 15
      nm AS STRING * 15
      mac AS STRING * 16
    END TYPE
    DIM host(255) AS HostData
    
    CLS
    
    FOR i = 1 TO 255
     k$ = INKEY$: IF k$ = CHR$(27) THEN EXIT FOR
     s$ = "192.168.54." + MID$(STR$(i), 2)
     CLS
     SHELL "ping " + s$ + " -n 1 -w 300"
     IF SCREEN(4, 1) = ASC("О") THEN k = k + 1: host(k).ip = s$
    NEXT i
    FOR i = 1 TO k
     CLS
     SHELL "nbtstat -A " + host(i).ip
     s$ = ""
     FOR n = 5 TO 19
      s$ = s$ + CHR$(SCREEN(9, n))
     NEXT n
      FOR n = 9 TO 20
      IF SCREEN(n, 5) = 32 THEN mcol% = n + 1: EXIT FOR
      NEXT n
     s$ = LTRIM$(s$)
     host(i).nm = s$
     s$ = ""
      FOR n = 19 TO 35
       s$ = s$ + CHR$(SCREEN(mcol%, n))
      NEXT n
     s$ = LTRIM$(s$)
     host(i).mac = s$
    NEXT i
    OPEN "d:\ipreport.txt" FOR OUTPUT AS #1
     FOR i = 1 TO k
      PRINT #1, host(i).ip, host(i).nm, host(i).mac
     NEXT i
    CLOSE #1
    
    FUNCTION ping$ (host$)
    flag% = 0
    CLS
    IF ln% = 0 THEN ln% = 300
    SHELL "ping 192.168.0." + host$ + " -n 1 -w " + STR$(ln%)
    FOR i = 1 TO 10
    t$ = CHR$(SCREEN(4, 42 + i))
    IF t$ = "м" OR t$ = " " THEN EXIT FOR
    sum$ = sum$ + t$
    NEXT i
    IF i > 1 THEN flag% = 1
    ping$ = sum$
    END FUNCTION

    Фрагмент говнокода 10-летней давности, написанного мною на QuickBasic 4.5

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

    Форматирование сохранено.

    guest, 16 Марта 2009

    Комментарии (3)
  8. VisualBasic / Говнокод #650

    −272.6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    set DISK=none
    set BOOTFLAG=boot666s.tmp
    
    echo This file is used to determine current drive letter. It should be deleted. >\%BOOTFLAG%
    if not exist \%BOOTFLAG% goto readOnly
    
    echo Wait please, searching for current drive letter.
    for %%d in ( C D E F G H I J K L M N O P Q R S T U V W X Y Z ) do if exist %%d:\%BOOTFLAG% set DISK=%%d

    Это из батника bootinst.bat LiveCD Slax6. Он должен сделать флешку бутабельной. При всем уважении... И да, добавьте CMD в список языков.

    guest, 03 Марта 2009

    Комментарии (2)
  9. VisualBasic / Говнокод #616

    −435.7

    1. 1
    2. 2
    Function fixProblems()
    Exit Function

    Никаких проблем , чувак.

    guest, 26 Февраля 2009

    Комментарии (10)
  10. VisualBasic / Говнокод #605

    −281.8

    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
    Public Function GetFormatedValue(ByVal columnName As String, ByVal value As Object) As String
    	Dim result As String = value.ToString()
    	Dim vint As Integer
    	If (TypeOf value Is Decimal) Then
    		vint = CType(CType(value, Decimal), Integer)
    	ElseIf (TypeOf value Is Integer) Then
    		vint = CType(value, Integer)
    	Else
    		vint = CType(Decimal.Parse(value.ToString(), System.Globalization.CultureInfo.InvariantCulture), Integer)
    	End If
    
    	Dim stringValue = ConvertStringToInt(value)
    
    	Select Case foundedColumn.Format
    		Case "3"
    			result = String.Format("${0}M", GetSplitValue(CType(CType(stringValue, Integer) / 1000000, Integer)))
    		Case "2"
    			result = String.Format("${0}K", GetSplitValue(CType(CType(stringValue, Integer) / 1000, Integer)))
    		Case "1"
    			result = String.Format("${0}", GetSplitValue(vint))
    	End Select
    	Return result
    End Function
    
    Private Function ConvertStringToInt(ByVal value As Object) As String
    	Return CType(value, String).Replace(",", String.Empty).Replace(".", String.Empty).Replace(" ", String.Empty)
    End Function

    Сначало падал exception на 9 строчке, т.к. не была указана культура, вообще.
    После того как указали культуру, все, через кейс на 20 строчке, проходило успешно
    Далее, когда изменился формат, для правильной конверсии закодили функцию ConvertStringToInt (line 25)

    guest, 24 Февраля 2009

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