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

    −126

    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
    1CClientBankExchange
    ВерсияФормата=1.01
    Кодировка=Windows
    Получатель=
    ДатаНачала=25.09.2012
    ДатаКонца=25.09.2012
    ...
    СекцияРасчСчет
    ...
    КонецРасчСчет
    СекцияДокумент=Платежное поручение
    ...
    КонецДокумента
    КонецФайла

    Формат файла: Стандарт обмена с системами "Клиент банка"
    http://v8.1c.ru/edi/edi_stnd/100/101.htm

    Пидорва изобрела ini-файлы. Но убило не это, а это:
    >Кодировка=Windows

    Запостил: Centry, 24 Октября 2012

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

    • Возможные значения:
      DOS
      Windows

      "А что, еще бывают?"
      Если строка = "кодировка=Windows" То
        Виндоус = ИСТИНА
      ИначеЕсли s = "ъюфшЁютър=DOS" То
        Виндоус = ЛОЖЬ
      Иначе 
        ...
      КонецЕсли

      И интересно, как бы парсинг выглядел в общем случае...
      Ответить
      • Кодировка=Windows
        ъюфшЁютър=DOS
        РљРѕРґРёСЂРѕРІРєР°=Linux
        лПДЙТПЧЛБ=Unix
        Ответить
      • Ты наоборот перекодировал, как будто каждую строчку смотришь из разной кодировки. Нужно всё смотреть из одной кодировки. Например, из windows-1251:
        Если строка = "кодировка=Windows" То
          Виндоус = ИСТИНА
        ИначеЕсли s = "Є®¤Ёа®ўЄ=DOS" То
          Виндоус = ЛОЖЬ
        ИначеЕсли s = "РєРѕРґРёСЂРѕРІРєР°=Linux" То
          Виндоус = ЛОЖЬ
        ИначеЕсли s = "ЛПДЙТПЧЛБ=Unix" То
          Виндоус = ЛОЖЬ
        ИначеЕсли s = "ЉЋ„€ђЋ‚ЉЂ=Macintosh" То
          Виндоус = ЛОЖЬ
        ИначеЕсли s = "\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430=Java" То
          Виндоус = ЛОЖЬ
        ИначеЕсли s = ":>48@>2:0=Unicode" То
          Виндоус = ЛОЖЬ
        ИначеЕсли s = "§Ь§а§Х§Ъ§в§а§У§Ь§С=Chinese" То
          Виндоус = ЛОЖЬ
        ИначеЕсли s = "$B'\'`'U'Z'b'`'S'\'Q(B=Japanese" То
          Виндоус = ЛОЖЬ
        ИначеЕсли s = "+BDoEPgQ0BDgEQAQ+BDIEOgQwAD0-UTF7" То
          Виндоус = ЛОЖЬ
        ...
        КонецЕсли
        Ответить
    • я-то думал, что Виндовс - это ОС, но я ошибался, это - Кодировка!
      Ответить
      • В Фаре первом в просмотровщике, кстати, похожая терминология была. Но для интерфейса, думаю, это оправдано - Win/DOS нагляднее, чем какие-то циферки.
        Ответить
        • в те времена, это было более оправдано, когда никакого юникода никто еще не знал
          Ответить
    • ДатаНачала=...
      ДатаКонца=...
      ДатаНачалаКонца=...
      Ответить
    • ВерсияФормата=1.01
      Кодировка=Windows

      А если кодировка будет ДОС?
      Ответить
    • Странно, в восьмёрке поддержка хмл искаропки есть. Правда, не все осилить могут.
      Ответить
    • "Яб давно на хмл перешел, но это ж как сегментные регистры - рас они есть, и потенциально их юзают миллионы, их надо поддерживать!"
      - пока не найдется какой-нибудь смелый АМД, который громко скажет "пук" "нет"
      Ответить
      • > смелый АМД, который громко скажет "пук" "нет"
        А уже были прецеденты?
        Ответить
        • В длинном режиме «amd64» работают только сегментные регистры FS и GS, остальные выпилены. И ещё куча инструкций выпилена типа однобайтовых инкрементов-декрементов, поэтому под длинный режим «amd64» труднее писа́ть в ASCII-кодах.
          Ответить
          • Зато там есть RIP-relative адресация, писатели малвари радостно рукоплещут.
            Ответить
            • Да, вирусы клепать удобнее, ведь они требуют PIC. Без RIP-relative приходилось делать что-то типа такого:
              call @1
              @1: pop ebx
              В ebx получаем текущий адрес, по которому метка @1 загружена в память, и дальше пердолимся с разностями.

              А теперь всё можно делать относительно RIP и течь.
              Ответить
    • Кодировка=Windows
      указываем в какой кодировке будут значения пар, сами параметры всегда в cp1251
      Ответить

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