Gå til innhold

Klarer ikke laste informasjon fra QSettings


Anbefalte innlegg

Hei!

 

Har to funksjoner for å gjøre om variablene i en klasse til en ByteArray, slik at den ByteArray'en senere kan lagres i en fil. Jeg bruker Qt rammeverket her, så lagring og lasting gjøres ved hjelp av QSettings.

 

Nå skal det sies at jeg er litt rusten i C++ da jeg hovedsaklig jobber med C#, men inntil videre er det ikke mulig å utvikle Nokia apps med C# så C++ it is. Uansett. Det er ingen problem å gjøre variablene om til ByteArray og så lagre dette, men jeg får "Bad Memory Access" feil når jeg prøver å gjøre ByteArray'en om til variabler igjen. Det morsomme her er at det fungerte mens klassene ikke var pointers/references (on the heap), men nå som jeg har gjort dem om til pointers av ulike grunner fungerer det plutselig ikke... Setter pris på all hjelp en kan få!

 

Her er funksjonene:

 

void TvShow::loadVariablesFromArray(QByteArray settings)
{
   QDataStream in(&settings, QIODevice::ReadOnly);

   in >> this->ShowId
      >> this->ShowName
      >> this->ImagePath
      >> this->Description
      >> this->FirstAired
      >> this->NextEpisodeDate;
}

QByteArray TvShow::saveVariablesToArray()
{
   QByteArray returnArray;
   QDataStream out(&returnArray, QIODevice::WriteOnly);

   out << this->ShowId
<< this->ShowName
<< this->ImagePath
<< this->Description
<< this->FirstAired
<< this->NextEpisodeDate;

   return returnArray;
}

Lenke til kommentar
Videoannonse
Annonse

Det morsomme her er at det fungerte mens klassene ikke var pointers/references (on the heap), men nå som jeg har gjort dem om til pointers av ulike grunner fungerer det plutselig ikke... Setter pris på all hjelp en kan få!

 

Er variablene du prøver å skrive til pekere?

I så fall kan det være grunnen. Kan være noe implisitt casting som foregår.

Når jeg testa fikk jeg iallfall til å bruke <<-operatoren med en random pekertype, men ikke >>-operatoren. (Dog feilen kom vet kompillering)

Kan prøve med:

 

in >> *this->ShowId

Endret av oln
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...