Dziwne liczby (konstruktory, klasy)

2013-06-02 16:08
juzniewiem
0

Zmienna w klasy ma dziwne liczby zamiast tych który wydaje mi się, że powinny zostać przypisane w konstruktorze.

mainwindow.cpp:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <windows.h>
#include <baza.cpp>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    Baza BazaGry;
    ui->label->setText(QString::number(BazaGry.plansze[0][0][6]));
}

baza.cpp (ten algorytm działa w codeblocks, ale tutaj w QT już coś jest nie tak)

#include "baza.h"
#include <fstream>
#include <stdlib.h>
using namespace std;
Baza::Baza()
{
    ifstream odczyt;
    odczyt.open("baza.txt");
    string linia;
    string wartosc="";
    int ktory;
    for(int i=0;i<134;i++) {
        getline(odczyt,linia);
        ktory=0;
        if((i+1)%9==0) continue;
        for(unsigned int j=0;j<linia.length();j++) {
            if(((linia[j]>=48) && (linia[j]<=57)) || (linia[j]==45)) wartosc+=linia[j];
            else {
                plansze[i/9][i%9][ktory]=atof(wartosc.c_str());
                wartosc="";
                ktory++;
            }
        }
        if(wartosc!="") plansze[i/9][i%9][7]=atof(wartosc.c_str());
    }
}
...

baza.h

#ifndef BAZA_H
#define BAZA_H

class Baza
{
public:
    Baza();
    int plansze[15][8][8];
};

#endif // BAZA_H

baza.txt


0 0 0 4 4 4 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 2 3 0 0 0

0 0 0 4 4 4 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 1 2 3 0 0 0

...

Pozostało 580 znaków

2013-06-02 16:23
juzniewiem
0

Program się zachowuje jakby nie było pliku, ale jest w folderze z plikami i dodany do resourców

Uruchamiasz ręcznie skompilowany plik (poza Qt), czy uruchamiasz to poprzez Qt(bezpośrednio z jego poziomu)? *chodzi mi o środowisko Qt, z jakiego korzystasz (QtCreator?). - Tacet 2013-06-02 18:16

Pozostało 580 znaków

2013-06-02 18:25
juzniewiem
0

Używam QT Creator

I skompilowany program uruchamiasz bezpośrednio z jego poziomu? Spróbuj uruchomić ręcznie program z poziomu Windowsa (katalogu). Jeżeli zachowanie wskazuje na brak plików to prawdopodobnie są one w złym miejscu ;) Nie pamiętam tylko gdzie w Qt trzeba było je trzymać. - Tacet 2013-06-02 18:29

Pozostało 580 znaków

2013-06-02 18:35
juzniewiem
0

Plik tekstowy dodałem w ten sam sposób i w tym samym miejscu co plik obrazkowy który normalnie działa. Odpalić program mogę tylko z poziomu qtc, bo jak próbuje opublikować projekt to dostaję info, że publikacja nie jest możliwa

Pozostało 580 znaków

2013-06-02 19:03
0
Baza::Baza()
  {
   ifstream fin("baza.txt");
   if(!fin) cerr<<"Brak pliku baza.txt może nazwales go baza.txt.cpp lub baza.txt.txt poniewaz postanowiles utrudnic sobie zycie i schowac nazwy znanych rozszerzen w ustawieniach windows"<<endl;
   int *tb=&plansze[0][0][0];
   for(int i=0;i<sizeof(plansze)/sizeof(int);++i) fin>>tb[i];
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon, 2013-06-02 19:36

Pozostało 580 znaków

2013-06-02 19:12
juzniewiem
0

Nie mam pojęcia jak to powinno działać, ale wyskakuje błąd kompilacji:
błąd:no match for 'operator>>' in 'fin >> ((Baza*)this)->Baza::plansze[i]'

Pozostało 580 znaków

2013-06-02 19:26
juzniewiem
0

Kompiluje się, ale cały czas jest to samo. Na pewno musi być coś z tym plikiem, bo już próbowałem na wszystkie sposoby: do pliku nie ma dostępu z klasy, ani z maina, ścieżki wpisywałem różne ":baza.txt", "baza.txt", ":pliki/baza.txt", ale cały czas to samo.

daj sciezke bezwzgledna, wtedy sie przekonasz na 100% czy chodzi o sciezke, czy o cos innego. - n0name_l 2013-06-02 19:31
jeszcze raz poprawiłem. - _13th_Dragon 2013-06-02 19:36

Pozostało 580 znaków

2013-06-02 19:38
juzniewiem
0

Funkcja odczyt.is_open() zwraca false cały czas. Podałem ścieżkę bezwzględną, ale nic to nie zmieniło.

Pozostało 580 znaków

2013-06-02 20:42
juzniewiem
0

Wczytałem tym kodem i już działa:


    QFile inputFile(":/input.txt");
    if (inputFile.open(QIODevice::ReadOnly))
    {
       QTextStream in(&inputFile);
       while ( !in.atEnd() )
       {
          QString line = in.readLine();
          ...
       }
    }

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0