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

Qt błąd w if'ie??

Object Storage Arubacloud
0 głosów
676 wizyt
pytanie zadane 16 marca 2016 w C i C++ przez niezalogowany

Witam, stworzyłem funkcję która wczytuje dane z pliku. Z powodów takich, że sam pracowałem nad tą funkcją i jest ona (prawie) uniwersalna (jeszcze małe poprawki i będzie uniwersalna), nie pokażę wam jej całej, pokaże tylko fragment, który nie działa.

Całość dobrze działała na Builderze, jednak przenosząc się na Qt musiałem kilka rzeczy zmienić. 

Oto kod:

QFile plik(sciezka);
  if(plik.open(QIODevice::ReadOnly | QIODevice::Text))

Ścieżka do pliku wygląda następująco:

"baza/bezpiecznik.txt"

kwestia jest taka, że plik bezpiecznik.txt istnieje, a if nie jest spełniony i teraz kwestia czemu

2 odpowiedzi

0 głosów
odpowiedź 16 marca 2016 przez mariush Dyskutant (7,860 p.)
wybrane 20 marca 2016
 
Najlepsza

Wszystko jest jak najbardziej Ok. Sprawdź czy w zmiennej sciezka siedzi to co powinno.

QString sciezka = "baza/bezpiecznik.txt";
QFile file(sciezka);
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
    qDebug() << "Otworzono";
}
else
{
    qDebug() << "Nie można otworzyć pliku";
}

 

komentarz 20 marca 2016 przez niezalogowany
edycja 20 marca 2016
@Mariush

Gdzie mam dać te linijkę??

@CONTINUE

Dobra nie było pytania, jak wybieram plik przez ten sposób to działa prawidłowo. Ale to wciąż nie rozwiązuje mojego problemu.
komentarz 20 marca 2016 przez mariush Dyskutant (7,860 p.)

Wybierz plik w ten sposób, stwórz obiekt QFile z tą ścieżką i sprawdz jaka jest ścieżka absolutna i relatywna do tego pliku, którego szukasz.

QString fileName = QFileDialog::getOpenFileName(this, tr("Open"), QDir::homePath());
QFile file(fileName);
QFileInfo info(file);

QString sciezka_absolutna = info.absoluteFilePath();
qDebug() << sciezka_absolutna;

QDir dir(QDir::currentPath());
qDebug() << dir.path();

QString sciezka_relatywna = dir.relativeFilePath(fileName);
qDebug() << sciezka_relatywna;

Będziesz wtedy wiedział jakia jest ścieżka absolutna i relatywna do tego pliku.

komentarz 20 marca 2016 przez niezalogowany
Łał, teraz to dowaliłeś kod i działa, wszystko pięknie działa. :) dzięki za pomoc :)
komentarz 20 marca 2016 przez draghan VIP (106,230 p.)
No to więc w czym w końcu był problem?
komentarz 20 marca 2016 przez niezalogowany
ścieżka relatywna, powinno być ../folder w którym się znajduje program/kolejne foldery/plik i format

teraz jest ok :)
0 głosów
odpowiedź 16 marca 2016 przez Blacha Mądrala (5,960 p.)
Jako że się nie znam na Qt i nie wiem w jakim języku programujesz to dał bym takie dwie, proste rady(co ja bym zrobił):

Ja bym wpierw zobaczył czy na pewno program interpretuje ścieżkę tak jak chcemy (stworzył bym nowy plik i zobaczył czy jest tam gdzie chce).

Drugie kwestia to co funkcja plik.open zwraca, może 0 odpowiada poprawnemu otworzeniu pliku a może jest typu void (ale chyba był by wyłapany błąd, nie wiem.) a może zwraca coś jeszcze innego.
komentarz 16 marca 2016 przez jpacanowski VIP (101,940 p.)

http://doc.qt.io/qt-4.8/qiodevice.html#open

Returns true if successful; otherwise returns false.

komentarz 19 marca 2016 przez niezalogowany
czytam na ten temat i nic nie działa

Podobne pytania

0 głosów
2 odpowiedzi 140 wizyt
pytanie zadane 27 grudnia 2015 w C i C++ przez konrad99 Gaduła (4,090 p.)
0 głosów
2 odpowiedzi 215 wizyt
pytanie zadane 18 listopada 2015 w C i C++ przez maciek061 Gaduła (4,490 p.)
0 głosów
1 odpowiedź 282 wizyt
pytanie zadane 23 marca 2016 w C i C++ przez TheFeniks Gaduła (4,690 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 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!

...