Няшная / Говнокод #10616 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
__flash unsigned char strings[] =
{
  20,     '*','*','Р','е','ж','и','м',' ','О','т','ч','ё','т','о','в',' ','Ф','Р','*','*',
  20,     'П','р','о','м','.',':','1',' ','С','м','е','н','.',':','2',' ','Ф','O',':','3',
  20,     ' ','З','а','к','р','ы','т','ь',' ','с','м','е','н','у',' ','Ф','Р','?',' ',' ',
  20,     ' ','П','е','ч','а','т','а','т','ь',' ','X','-','О','т','ч','ё','т','?',' ',' ',
  20,     '*','Р','е','ж','и','м',' ','К','о','р','р','е','к','ц','и','и',' ','Ф','Р','*',
  20,     'В','Н','Е','С',':','1',' ','В','Ы','П','Л',':','2',' ','К','О','Р','Р',':','3',
  20,     '*','К','Ф','Р','*',' ','О','п','е','р','.','В','н','е','с','е','н','и','е',' ',
  20,     '*','К','Ф','Р','*',' ','О','п','е','р','.',' ','В','ы','п','л','а','т','а',' ',
  20,     '*','К','Ф','Р','*',' ','К','о','р','р','е','к','т','-','й',' ','ч','е','к',' ',
  20,     '*','Р','е','ж','и','м',' ','П','р','о','г','р','а','м','-','я',' ','Ф','Р','*',
  20,     'В','Р','Е','М','Я',':','1',' ','П','Р','Л',':','2',' ','Т','И','П',':','3',' ',
  20,     '*','П','Ф','Р','*',' ',' ','Д','а','т','а','-','В','р','е','м','я',' ',' ',' ',
  12,     'Т','И','П',' ','Т','О','П','Л','И','В','А','?',
  4,      'д','о','з','а',
  5,      'C','У','М','М','А',
  5,      'C','Д','А','Ч','А',
  4,      'р','у','б','.',
  9,      'О','Ш','И','Б','К','А',' ','Ф','Р',
  9,      'П','О','Л','Н','.',' ','Б','А','К',
  7,      'П','а','р','о','л','ь',':',
  20,     ' ',' ','П','е','ч','а','т','ь',' ','X','-','О','т','ч','ё','т','а',' ',' ',' ',
  20,     ' ',' ','З','а','к','р','ы','т','и','е',' ','с','м','е','н','ы',' ','Ф','Р',' ',
  20,     '*','Р','е','ж','и','м',' ','П','р','о','г','.',' ','П','а','р','а','м','.','*',
  4,      'Т','Р','К',':',
  3,      'Р','К',':',
  5,      '*','П','П','*',' ',
  20,     '*','И','Н','Ф','*',' ',' ','Ц','Е','Н','А',' ','З','А',' ','Л','И','Т','Р',' ',
  20,     ' ','Г','р','а','н','и','т','-','2','м','к',' ','V','e','r',' ','1','.','1',' ',
  20,     ' ',' ','П','о','д','ч','и','н','ё','н','н','ы','й',' ','р','е','ж','и','м',' ',
  20,     ' ',' ',' ','А','к','т','и','в','н','ы','й',' ','р','е','ж','и','м',' ',' ',' ',
  20,     ' ','Ф','а','т','а','л','ь','н','а','я',' ','о','ш','и','б','к','а','!','!','!',
  20,     '*','C','у','м','м','а','р','н','ы','е',' ','с','ч','ё','т','ч','и','к','и','*',
  20,     'C','М','Е','Н','Н','Ы','Е',':','1',' ','Ф','И','С','К','А','Л','-','Е',':','2',
  20,     '*','C','М','.','С','Ч','*',' ','Т','Р','К',':',' ',' ',' ',' ',' ',' ',' ',' ',
  20,     'С','б','р','о','с','и','т','ь',' ','С','м','е','н','.','С','Ч','.','?',' ',' ',
  6,      'Н','Л','.','С','Ч','=',
  6,      'Ф','С','.','С','Ч','=',
  20,     ' ',' ',' ','П','е','ч','а','т','ь',' ','ч','е','к','а',' ',' ',' ',' ',' ',' ',
  20,     '*','П','Ф','Р','*',' ','П','а','р','о','л','ь',' ','К','а','с','с','и','р','а',
  20,     '*','П','Ф','Р','*',' ','Т','и','п',' ','Ф','Р',' ',' ',' ',' ',' ',' ',' ',' ',
  20,     ' ','В','ы','к','л','ю','ч','е','н','и','е',' ','п','и','т','а','н','и','я',' ',
  20,     'Н','Л',':','1',' ','Б','Н',':','2',' ','П','Р',':','3',' ',' ',' ',' ',' ',' ',//'C','Б',':','4',' ',
  20,     ' ','П','о','т','е','р','я',' ','с','в','я','з','и',' ','с',' ','Т','Р','К',' ',
  20,     ' ','О','ш','и','б','к','а',' ','Ф','Р',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
  20,     ' ',' ',' ',' ','П','е','р','е','з','а','п','у','с','к','!','!','!',' ',' ',' ',
  20,     ' ','З','а','п','р','о','с',' ','с','о','с','т','о','я','н','и','я',' ','Ф','Р',
  20,     ' ','У','с','т','а','н','о','в','к','а',' ','в','р','е','м','е','н','и',' ',' ',
  20,     '*','C','М','.','С','Ч','*',' ',' ',' ','С','М','Е','Н','Н','Ы','Е',' ',' ',' ',
  20,     '*','О','Ф','Р','*',' ','Ф','И','С','К','.',' ','О','Т','Ч','Ё','Т','Ы',' ',' ',
  20,     '№',' ','С','М','Е','Н',':','1',' ','П','О',' ','Д','А','Т','А','М',':','2',' ',
  20,     '*','Р','О','Ф','Р','*',' ',' ','Ф','О',' ','П','О',' ','Д','А','Т','А','М',' ',
  20,     'c',' ',' ','-',' ',' ','-',' ',' ',' ','п','о',' ',' ','-',' ',' ','-',' ',' ',
  20,     '*','О','Ф','Р','*',' ',' ','Ф','О',' ','П','О',' ','С','М','Е','Н','А','М',' ',
  20,     '*','О','б','щ','а','я',' ','к','о','н','ф','и','г','у','р','а','ц','и','я','*',
  20,     'У','с','т','-','к','и',':','1',' ','З','а','м','е','н','а',' ','П','O',':','2',
  20,     'П','р','о','и','з','в','е','с','т','и',' ','з','а','м','е','н','у',' ','П','О',
  20,     '*','К','о','н','ф','*',' ',' ','П','а','р','а','м','е','т','р',':',' ',' ',' ',
  20,     'П','а','р','о','л','ь',' ','о','п','е','р','-','р','а',':',' ',' ',' ',' ',' ',
  20,     'П','а','р','о','л','ь',' ','а','д','м','и','н','.',':',' ',' ',' ',' ',' ',' ',
  20,     'М','и','н','.',' ','д','о','з','а',':',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',
  20,     'Т','е','х','н','о','л','о','г','и','ч','.',' ','о','т','п','у','с','к',':',' ',
  11,     'О','Ш','И','Б','К','А',' ','Т','Р','К',':',
  20,     ' ','В','В','Е','Д','И','Т','Е',' ','С','Е','К','Ц','И','Ю',':',' ',' ',' ',' ',
  8,      'В','о','з','в','р','а','т',':',
  8,      'п','е','ч','а','т','а','т','ь',
  11,     'н','е',' ','п','е','ч','а','т','а','т','ь',
  10,     'c','п','р','а','ш','и','в','а','т','ь',
  20,     'В','о','з','в','р','а','т','?',' ','Д','а',':','1',' ','О','т','м',':','3',' ',
  10,     'C','б','о','р','к','а',' ','о','т',' ',
  11,     'З','а','г','р','у','з','к','а',' ','П','О',
  9,      'Н','е','т',' ','с','в','я','з','и',
  10,     'Н','е','т',' ','б','у','м','а','г','и',
  7,      '2','4',' ','ч','а','с','а',
  11,     'Н','е','п','р','.',' ','р','е','ж','и','м',
  11,     'П','О','В',':','1',' ','О','Т','М',':','3',
  16,     'Н','е','в','е','р','н','ы','й',' ','т','и','п',' ','Т','Р','К',
  11,     'C','к','и','д','к','а',' ','№',' ',':',' ',

Всё, к сожалению, не влезло - 117 строк!

Запостил: boolivar boolivar, (Updated )

Комментарии (14) RSS

    • Это код для микроконтроллера, у него гарвардская архитектура, ключевое слово __flash укаызывает компилятору разместить данные во флеш памяти (памяти команд).
      Ответить
      • > разместить данные ... в ... памяти команд
        Ололо так это байткод виртуальной 1ASS машины для микроконтроллеров чтож ты сразу не сказал
        Ответить
    • Походу указание компилятору, чтобы массив размещал на флешке а не в RAM.

      UPD: опоздал 🙁
      Ответить
  • А как кстати выбирается нужная строка из этого массива? Циклом в котором пропускаются все строки до искомой? Или же есть второй индексный массив?
    Ответить
    • Всё оч просто! 🙂
      #define   REPORT_MODE_FR_OFFSET             0
      #define   REPORT_FR_TYPE_OFFSET             21
      #define   PRINT_Z_REPORT_OFFSET             42
      #define   PRINT_X_REPORT_OFFSET             63
      #define   CORRECT_MODE_FR_OFFSET            84
      #define   CORRECT_TYPE_FR_OFFSET            105
      #define   CORRECT_INSERT_OFFSET             126
      #define   CORRECT_PAYOUT_OFFSET             147
      #define   CORRECT_RECEIPT_OFFSET            168
      ...

      И в этом весь сок, прикинем что нам придется сделать чтобы вставить/выкинуть одну букву из строки...
      Ответить
      • какой объем памяти в железке? ром и рам
        но вообще
        static const char mode_fr[] = "**Режим отчетов ФР**";
        static const char close_session[] = " Закрыть смену ФР?  ";
        //...
        и так должно заставить компилятор упаковать всё это барахло достаточно компактно (даже не факт, что он вообще будет по слову выравнивать эти записи) в сегмент .data - я конечно не знаю нюансов этой вот гарвардской архитектуры, типа __flash и проч, поэтому может этот подход не катит?

        edit: а, типа __flash это сегмент .code?
        что, если перед вышеописанными строками вставить __flash?
        Ответить
        • Да, так и надо было сделать. Вы не волнуйтесь, этот говнокод уже отрефакторен 🙂 Но чтобы это сделать мне пришлось писать скрипт на пайтоне, не вручную же мне все 117 строк править, плюс столько же индексов, вот как это выглядит сейчас:
          __flash char report_mode_fr_offset[] = "**Режим отчётов ФР**";
          __flash char report_fr_type_offset[] = "Пром.:1 Смен.:2 ФO:3";
          __flash char print_z_report_offset[] = " Закрыть смену ФР?";
          __flash char print_x_report_offset[] = " Печатать X-Отчёт?";

          Ну, а по поводу памяти - это ATmega128 - 128K ROM и 4K RAM
          Ответить
  • Какой же неудобный язык Си! В Паскале такие строки описываются встроенным типом.
    Ответить
  • Въебал первому наху минус, остальным - по плюсу 😉
    Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8