Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Polish
  4. QString i problem z kropką
QtWS25 Last Chance

QString i problem z kropką

Scheduled Pinned Locked Moved Polish
3 Posts 2 Posters 1.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Q Offline
    Q Offline
    qazpylades
    wrote on last edited by
    #1

    Wykonuję następującą operację:
    @
    this->file_name= QFileDialog::getOpenFileName
    (
    handle_parent,
    QObject::tr("OtwĂłrz plik konfiguracyjny"),
    ".",
    QObject::tr("Images (.csv)")
    );
    @
    Powoduje to zawieszenie programu.
    Po badaniach wyszło, iż problemem jest kropka przed rozszerzeneim pliku.
    Po małej zmianie z kropki na # przypisanie jest ok.
    @
    this->file_name=
    QFileDialog::getOpenFileName
    (
    handle_parent,
    QObject::tr("OtwĂłrz plik konfiguracyjny"),
    ".",
    QObject::tr("Images (
    .csv)")
    ).replace(".","#");
    @
    Ten sam problem się pojawia w momencie gdy próbuję
    odwrócić sytuację:
    @
    QFile file(this->file_name.replace("#","."));
    @
    podanie bezpośrednio filename.csv z kropką powoduje dokładnie ten sam problem.
    Czy ktoś się spotkał z tak dziwacznym problemem że nei można w QString umieścić ciągu znaków z kropką ???

    1 Reply Last reply
    0
    • sierdzioS Offline
      sierdzioS Offline
      sierdzio
      Moderators
      wrote on last edited by
      #2

      W QString można umieścić dowolny ciąg znaków, nawet wiele \0 i znaki niewidoczne (cokolwiek co jest w UTF-16).

      Proszę podaj więcej informacji na temat objawów "zawieszenia" programu. Widać jakieś informacje o błędzie, coś pojawia się na konsoli, może segfault?

      (Z(:^

      1 Reply Last reply
      0
      • Q Offline
        Q Offline
        qazpylades
        wrote on last edited by
        #3

        Objaw jest głupi ale wynikł z.... zupełnie niepowiązanego braku wskaźnika do obiektu około 20 lini nizej.
        przypisanie kropki w QString powodowało, że program zwisał. Przez przypadek odkryłem że przestał zwisać jak wykomentowałem cało funkcji poniżej obsługi pliku a przechodził przez ten błędny wskaźnik obiektu gdy nieprzypisywałem kropki do QString. Obiekt był niepowiązany z QString i wyliczał crc32 z daty i czasu a zapomniałem w konstruktorze przypisać obiekt do wskaźnika. Niejednoznaczność błędnego zachowania i miejsca błędu jest zaskakująca:

        void themes::load(QWidget* handle_parent)
        {
        qDebug() << FLV << " ";
        this->file_select(handle_parent); // <<<< Tu następował zwis nawet jak zastąpiłem bezpośrednim wpisaniem ciągu w QString
        qDebug() << FLV << "this->file_name= " << this->file_name;
        this->max_records_set(RUND_MAX); // <<<< W tej funkcji użyłem niezainicjowany wskaźnik.
        if (0!=this->load_file())
        { /* blad zaczytania pliku tematów */
        //hmain->all_free();
        qDebug() << FLV << " ";
        this->all_themes=0;

        QMessageBox msgBox;
        msgBox.setIconPixmap( QPixmap("logo32.png") );
        msgBox.setWindowTitle("Uwaga!");
        msgBox.setIcon(QMessageBox::Warning);
        msgBox.setText(QObject::trUtf8("Błąd zaczytania pliku tematów do głosowania"));
        msgBox.exec(); // wywołanie okienka z zapytaniem
        this->file_load_ok=0;
        qDebug() << FLV << " ";
        }
        else
        {
        qDebug() << FLV << " ";
        this->file_load_ok=1;
        }
        qDebug() << FLV << " ";
        }

        Problem rozwiązany.

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved