QString out of range

QString out of range
SH
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 6 lat
  • Postów:69
1

abc_bmp_300x300_q85.jpg

Tak aktualnie wygląda u mnie błąd gdy wywołuję taką metodę

Kopiuj
void okno::on_actionOpen_triggered()
{
    //QString
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                     "/home",
                                                     tr("Kasia files(*.kas);;Text files (*.txt);;XML files (*.xml);;All files (*.*)"));
    if( !fileName.isNull() )
    {
        fstream plik;
        plik.open("bin/outbase.kas",ios::out | ios::app);
        if( plik.good() == true)
            {
                plik <<fileName.toStdString().c_str()<<"\n";
            }
            else
            {
                Error*o = new Error();
                o->setNapis(QString::fromStdString("Cannot open file"));
                o->show();
            }
        plik.close();
    }
} 

Nie wiem jak go naprawić co zrobić ? By string był odpowiedni

adf88
No nie gadaj, że swój program nazwałeś "Kasia" :D
MasterBLB
  • Rejestracja:około 19 lat
  • Ostatnio:4 dni
  • Lokalizacja:Warszawa
  • Postów:1454
2

Skoro używasz już Qt to zainteresuj się klasą QFile zamiast fstreama.
I nie QString::isNull() ale QString::isEmpty().


"Sugeruję wyobrazić sobie Słońce widziane z orbity Merkurego, a następnie dupę tej wielkości. W takiej właśnie dupie specjalista ma teksty o wspaniałej atmosferze, pracy pełnej wyzwań i tworzeniu innowacyjnych rozwiązań. Pracuje się po to, żeby zarabiać, a z resztą specjalista sobie poradzi we własnym zakresie, nawet jeśli firma mieści się w okopie na granicy obu Korei."
-somekind,
konkretny człowiek-konkretny przekaz :]
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
1

Tak jak napisał MasterBLB, nie ma sensu mieszać w to STL. Qt wspiera STLa by nie było problemu z używaniem innych bibliotek, jak piszesz nowy kod to lepiej nie mieszać Qt z STL.

Kopiuj
void okno::on_actionOpen_triggered()
{
    QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"),
                                                     "/home",
                                                     tr("Kasia files(*.kas);;Text files (*.txt);;XML files (*.xml);;All files (*.*)"));
    if( !fileName.isNull() ) {
        QFile plik("bin/outbase.kas");
        if(file.open(QIODevice::WriteOnly|QIODevice::Append)) {
            QTextStream text(&plik);
            text <<fileName << endl;
            plik.close();
        } else {
            Error*o = new Error();
            o->setNapis(tr("Cannot open file"));
            o->show();
        }
    }
} 

Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 1x, ostatnio: MarekR22
SH
  • Rejestracja:prawie 13 lat
  • Ostatnio:około 6 lat
  • Postów:69
0

dodam, że używam w tym momencie windows8 pod 7 nie generowało tego błędu
I dodam, że po wprowadzeniu poprawek od was błąd nadal wywala.
To może być problem tego, że windows8 right ?

edytowany 1x, ostatnio: Shial
MarekR22
Moderator C/C++
  • Rejestracja:ponad 17 lat
  • Ostatnio:2 minuty
1

wyjątek leci z xstring (wygląda na plik STL-a), wiec może być to winna na styku kompilator system. Poza tym Qt nie wspiera jeszcze W8 i nie jest to dziwne, bo to jest nadal nieoficjalny system.


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.