[gelöst]QDir::entryList wird nach ausführung wieder gelöscht

Alles rund um die Programmierung mit Qt
Antworten
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

[gelöst]QDir::entryList wird nach ausführung wieder gelöscht

Beitrag von Fenriswolf »

Guten Abend liebes Forum,
ich hab mal wieder ein Problem, bei dem ich nicht weiter komme. Internet und Suche hab ich schon bemüht, konnte jedoch nichts passendes zu dem Problem finden.

ich habe einen bisher sehr überschaubaren Code, doch schon allein dieser funktioniert nicht richtig.
ich will mir aus einem Pfad die Unterordner ausgeben lassen (nicht rekursiv!).
Das dies mit "QDir::entryList" erledigt wird, ist nicht schwer herauszubekommen.
mein kurzer code sind daher so aus:

Code: Alles auswählen

#include <QDir>
#include <QDebug>

#include "mainwindow.hpp"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    readfile();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::readfile()
{
    QString path;
#ifdef QT_DEBUG
    path = "*irdendein_Pfad*";
#endif
    QDir WorkPath(path);
    QStringList ListZentralen;
    if(!WorkPath.exists())
        qDebug() << "nicht lesbar";
    else
    {
        ListZentralen = WorkPath.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);
    }
    int i; //nur zu prüfzwecken beim debuggen/Fehlersuche
}
der Pfad existiert und ist lesbar, er springt auch in die else-Anweisung und führt den befehl beim debuggen ordnungsgemäß aus.
doch sofort danach springt der debug-Zeiger (der kleine gelbe pfeil) wieder zur zeile "QStringList ListZentralen", löscht damit wieder die liste und springt danach auf "QDir WorkPath(path);", und löscht mir damit wieder das QDir.
erst danach gehts mit dem "int i" weiter.
Kann mir einer das Verhalten erklären bzw. einen weg, wie ich zu meinem Ziel komme?

Danke schon mal im Voraus und noch einen schönen Abend
Zuletzt geändert von Fenriswolf am 17. August 2015 20:27, insgesamt 1-mal geändert.
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
RHBaum
Beiträge: 1436
Registriert: 17. Juni 2005 09:58

Re: QDir::entryList wird nach ausführung wieder gelöscht

Beitrag von RHBaum »

Theorie 1:

Dein Debugger ist kaputt ^^
welche Umgebung benutzt du denn ?

Theorie 2:

Code und debug Infos stimmen nicht überein ....
Sicher das du das binary debuggst was zum code passt ?

Theorie 3:

Int i; ist keine "debugbare"Anweisung sondern reserviert nur speicher aufn Stack.
EIgentlich macht die debug version dann doch was, aber keine Ahnung ob der Debugger das Anspringen kann ...
Eigentlich kannst du diese Zeile im debugger nicht wirklich "erleben"
die Zeile drauf ist das Ende des Blocks, somit werden die DTors von WorkPath und ListZentralen aufgerufen ...
ist es das was du mit
wieder zur zeile "QStringList ListZentralen", löscht damit wieder die liste
meinst ?
Normal springt der Debugger dann aber nicht wieder zur Instanziation der variable sondern führts einfach aus ....
Debugger einstellungen ???
ersetz mal int i; mit was produktiveren(Anweisung) fuer den compiler, und schau wann er dann zurueckspringt ...

Denk mal Theorie 1 und 2 sind schon bissi an den Haaren herbeigezogen ... ^^

Ciao ....
Fenriswolf
Beiträge: 27
Registriert: 11. November 2014 18:06

Re: QDir::entryList wird nach ausführung wieder gelöscht

Beitrag von Fenriswolf »

N Abend RHBaum,

1. als Umgebung nutze ich den QTCreator.
2. ich habe sogar (weil ich schon mal Probleme hatte, dass er nicht "korrekt" debuggt hat) bereinigt, neu erstellt und sofort debuggt.

zu 3. das int i; hatt' ich nur eingefügt, um einen kleinen Platzhalter zu haben, ohne dass er gleich aus der Prozedur rausspringt und ich damit die Variablenwerte nicht mehr überprüfen kann. (sobald QT Creator die klammer erreicht sind die variablen nicht mehr verfügbar)

EDIT: grad nochmal ausprobiert... jetzt gehts! keine Ahnung worans lag
Ich bin die Summer meiner Erfahrungen; und heute bin ich mehr, als ich gestern war
Antworten