• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Qt - losowanie - MessageBox nie pokazuje wczytanej linii z pliku

Object Storage Arubacloud
0 głosów
156 wizyt
pytanie zadane 2 sierpnia 2016 w C i C++ przez Persantarus Początkujący (320 p.)
edycja 2 sierpnia 2016 przez Persantarus
Cześć, piszę w Qt Creatorze program, który po naciśnięciu buttona ma losować liczbę z przedziału 1-25, potem wczytać linie tekstu z pliku .txt i wyświetlić MsgBoxa według schematu:

wylosowana liczba 1 - 1 pytanie

wylosowana liczba 2 - 2 pytanie itd....

MessageBoxa z samą wylosowaną liczbą program wyświetla bez problemu, gorzej jak pod liczbę chcę podpiąć pytanie, wtedy MsgBox nie wyświetla nic. Próbuje już kurcze chwilę i dalej nwm gdzie popełniam błąd. Dopiero zacząłem programowanie w Qt i możliwe, że źle używam tej funkcji readLine() czy coś.

//Edit: Robię coś źle(teraz zauważyłem) z tym pytanie[25] w pętli while, tylko nawet nwm jak mam to poprawić za bardzo....

Tutaj podrzucam plik mainwindow.cpp z całym kodem:

http://wklej.to/rMTxs

Gdy usunę voida pytanie_ile() to MsgBox bez problemu pokazuje wylosowaną liczbę.

Pomoże ktoś? :)

//Edit:

    QFile plik("pytania.txt");

       if(!plik.open(QIODevice::ReadOnly | QIODevice::Text))
       {
           QMessageBox w(this);
                   w.setText("Nie udało się otworzyć lub odczytać pliku!");
                   w.exec();
       }

       if (plik.open(QFile::ReadOnly))
       {
       QTextStream in(&plik);

       for(int i=0; i<26; i++)
             {
                 QString pytania[i] = in.readLine();
                 pytania[i] = pytanie[i];
             }
       plik.close();
             }

 

Zrobiłem jeszcze zamiast tego dziwnego while'a pętle for, bo i tak i tak w pliku będę miał zawsze 25 linii. Też nie działa. Nwm w czym jest problem, bo w konsoli nie ma ani jednego błędu. Wczytywanie pliku sprawdziłem, działa, bo jak go usuwam z folderu to MsgBox wyświetla "Nie udało się otworzyć lub odczytać pliku!",więc nwm co jest nie tak.... :(

1 odpowiedź

0 głosów
odpowiedź 2 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)

Nie znam się na QT, ale z tego co widzę, to deklarujesz tablicę 25-cio elementową:
[16] QString pytanie[25];
A w potem próbujesz przypisać do zmiennej [l] wartość jej 26-ego elementu.
[142]  l = pytanie[25];
Przypominam, że tablice indeksuje się od 0 do n-1.

komentarz 2 sierpnia 2016 przez Persantarus Początkujący (320 p.)
Poprawiłem to, ale to i tak raczej nic nie zmienia przy problemie z odczytem .txt i zapisem do QStringa.

W każdym razie dzięki! ;)

Podobne pytania

0 głosów
2 odpowiedzi 136 wizyt
pytanie zadane 24 kwietnia 2019 w C i C++ przez JuniorPL Użytkownik (770 p.)
0 głosów
2 odpowiedzi 494 wizyt
pytanie zadane 21 marca 2017 w C i C++ przez kosabdsm Początkujący (430 p.)
0 głosów
0 odpowiedzi 561 wizyt
pytanie zadane 17 listopada 2016 w C i C++ przez Knayder Nałogowiec (37,640 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...