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

    +133

    1. 1
    2. 2
    3. 3
    4. 4
    int type = int.Parse(r.Cells[3].Value.ToString());
    if (type == 1 || type == 3 || type == 5 || type == 6 || type == 7) type--;
    else if (type == 4) type = 2;
    else if (type == 666) type = 3;

    Парсим данные из XLS-файла.

    Запостил: Kirinyale, 21 Января 2011

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

    • ересь какая то, для чего это?
      Ответить
      • Вкратце:

        Дан XLSX файл от заказчика в специальном формате с описанием всех квестов для казуальной игрушки. Специально обученная (но, фактически, ни хрена не работающая) тулзовина под гордым названием "Editar" с помощью какого-то стороннего компонента грузит это дело и конвертит в XML, понимаемый кодом игры.

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

        Вот, сижу, решаю многуровневый квест под названием "проэкспортить это чудо по-человечески"... :)
        Ответить
        • судя по великолепному ветвлению продукт будет называться parsar pro, amirite?
          Ответить
        • работайте с экселем через JET
          хотя бы будете SQLные запросы писать
          Ответить
          • Оно мне надо? :) Я эксель в CSV сейвнуть могу - сразу куча головной боли уходит.
            Ответить
            • хм)
              Вам нравится парсить CSV вручную?
              Ответить
              • А чего там парсить, тем более на шарпе? :) построчное текстовое чтение + String.Split - и все дела, главное сепаратор подобрать так, чтобы строки кавычками оборачивать не приходилось.

                Собсно, уже давно распарсил, теперь пытаюсь выяснить, что с ним делать. :))
                Ответить
                • ну если проблем с экранированием нет -- тогда ладно

                  у джета, впрочем, свои беды: локалезависимые сепараторы, ограничение на 255 строк итд
                  Ответить
                  • Если бы были проблемы с экранированием, я бы, в конце концов, за то же время написал то же самое на C++ с использованием boost::tokenizer, и никаких гвоздей. :)
                    Ответить
                    • А что, стандартных библиотек для парсинга CSV в дотнете нет? =8-O
                      Ответить
                      • Я не большой спец по дотнету, т.к. поводы писать именно под него случаются редко, но гуглил - куда ни ткнись, всюду предлагают либо писать самому, либо пользоваться сторонним FileHelpers. Буст мне уже привычнее. :)
                        Ответить
                      • Назовите языки, где есть стандартные библиотеки для парсинга CSV.
                        Ответить
    • >>type == 666
      аааааааа
      господи иисуси спаси помилуй!!
      Ответить
      • 2012
        Ответить
        • 42
          а еще
          CAFEBABE, MZ^ и ELF :)
          Ответить
          • Года три назад у меня на Windows Mobile главное окно проги отвечало на специальное "опознавательное" сообщение кодом BABACACA... кажется, это был такой хитрый быдлоспособ защиты от повторного запуска. :)
            Ответить
      • Что интересно, в имеющихся у меня XLS типов 666 не присутствует, вместо них прописаны единицы, имеющие (насколько удалось понять) совсем другое значение. Видимо, богобоязненные американцы не рискнули выполнять инструкции наших монстров программирования дословно и предпочли этому баги. :)))
        Ответить
    • У меня в проекте похожее решение:
      if (enumValue == SomeEnum.CheckBox)
      {
      return SomeEnum.MultiSelect;
      }

      Ну и есть место где это в обратном порядке делается.

      Я сначала хотел порефакторить, но потом понял, что тот кусок кода лучше не трогать.
      Гидрабаги!!!
      Ответить
    • показать все, что скрытоcase type of
      ...

      ну вы понели
      Ответить

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