1. C++ / Говнокод #3898

    +152

    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
    bool Pl::load(QString &path){
        if(path.isEmpty()){
            return false;
        }
        QFile file(path);
        if(!file.exists()){
            return false;
        }
        file.open(QIODevice::ReadOnly | QIODevice::Text);
        file.setTextModeEnabled(true);
        if(!file.isOpen()){
            return false;
        }
        QString str;
        QString title;
        while(file.bytesAvailable() > 0){
        str = QString::fromUtf8(file.readLine(1024).trimmed());
            if(str.isEmpty()){
                continue;
            }
            else{
                if(str.at(0) == '#' && title.isEmpty()){
                    if(str.left(10) == "#EXTINF:0,"){
                        title = str.mid(10);
                    }
                    else{
                        title = "";
                    }
                }
            }
            if(this->addTrack(str, title)){
                title = "";
            }
            else{
                QUrl _u(str);
                if(this->addURL(_u, title)){
                    title = "";
                }
            }
        }
        file.close();
        return true;
    }

    Некий кусок кода для парсинга m3u от товарища POPSul

    Запостил: cutwater, 07 Августа 2010

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

    • не смешно
      Ответить
    • Нда формат m3u достаточно простой, хотелось бы увидеть QRegExp, который смыл бы немного душистой субстанции) А так ничего особо криминального нету, разве что кривые ифы.
      Ответить
    • Кривые ifы, сравнение строк путем .get(10) == pattern доставляет
      да заприметил еще неконстантную ссылку path
      Ответить
    • > file.open(QIODevice::ReadOnly | QIODevice::Text);
      > file.setTextModeEnabled(true);

      QT не знаю, но есть подозрение, что вторая строка избыточна, тк файл уже открыт в текстовом режиме в первой.
      Ответить

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