Gå til innhold

Hjelp til å tyde feil


Anbefalte innlegg

Unhandled Exception: System.NullReferenceException: Object reference not set to
an instance of an object.
  at std.ios_base._Init(ios_base* )
  at std.basic_ios<char,std::char_traits<char> >.init(basic_ios<char,std::char_
traits<char> >* , basic_streambuf<char,std::char_traits<char> >* _Strbuf, Boolea
n _Isstd) in e:\installed\visual studio.net architect edition enterprise\vc7\inc
lude\ios:line 130
  at std.basic_ostream<char,std::char_traits<char> >.__ctor(basic_ostream<char,
std::char_traits<char> >* , basic_streambuf<char,std::char_traits<char> >* _Strb
uf, Boolean _Isstd, Int32 _Isstd) in e:\installed\visual studio.net architect ed
ition enterprise\vc7\include\ostream:line 45
  at std.basic_iostream<char,std::char_traits<char> >.__ctor(basic_iostream<cha
r,std::char_traits<char> >* , basic_streambuf<char,std::char_traits<char> >* _St
rbuf, Int32 _Strbuf) in e:\installed\visual studio.net architect edition enterpr
ise\vc7\include\istream:line 806
  at std.basic_fstream<char,std::char_traits<char> >.__ctor(basic_fstream<char,
std::char_traits<char> >* , SByte* _Filename, Int32 _Mode, Int32 _Mode) in e:\in
stalled\visual studio.net architect edition enterprise\vc7\include\fstream:line
623
  at main(Int32 argc, SByte** argv) in c:\documents and settings\magnus\mine do
kumenter\visual studio projects\geek5_aa\geeky.cpp:line 63

 

Tror feilen ligger her:

(Det er en 'systemNullReferenceException')

  fstream foo("hoho.jpg", ios::out|ios::binary|ios::app);
foo.write(buffer, strlen(buffer));
foo.close(); 

 

'buffer' har fått en del binærdata lagret i seg tidligere i programmet. kanskje jeg må bruke en 'reinterpret_cast<char &>(buffer)' eller noe??

bufferhar fungert tidligere i programmet, og er deklarert slik:

char* buffer = new char[];

Lenke til kommentar
Videoannonse
Annonse

char* buffer = new char[];

Kompileres ikke v.h.a. GCC-3.4.0: error: expected primary-expression before ']' token

 

Noe slikt:

...
char* buffer = new char[10];
...
delete[](buffer);
...

 

Men lurt å ta en titt i boka ja. :]

Endret av søppel
Lenke til kommentar

[qutoe]'buffer' har fått en del binærdata lagret i seg tidligere i programmet.

...

jeg vet ikke størrelsen på den, så jeg har ikke noe tall å oppgi

 

Hvis du fortsatt holder på med den oppgaven du hadde i tidligere post, trenger du ikke lese inn hele fila. Uansett må du lagre størrelsen på dataene du leser inn i buffer samtidig som du leser inn.

 

struct Data {
 char* data;
 unsigned int size;
};

Lenke til kommentar

Hoho, den forrige oppgaven var en lure-oppgave, men jeg driver med noe liknende: les inn ei fil, xor decrypt, bytt ut noen verdier og lagre som noe.jpg

 

jeg gjør dette for å lese inn, hvordan kan jeg modifisere det til å lagre størrelsen samtidig som jeg leser inn ??

ifstream in("data.bin", fstream::binary);
char* buffer = new char[];
while(!in.eof()){
in.get(reinterpret_cast<char &>(buffer)); 
}

 

edit: bare legge inn i loopen at den øker 'size' med én hver gang?? slik:

 

ifstream in("data.bin", fstream::binary);

struct Data {
       char* data;
       unsigned int size;
       };

while(!in.eof()){
in.get(reinterpret_cast<char &>(buffer)); 
       size += 1;
}

Endret av Zethyr
Lenke til kommentar

ja, det får programmet mitt til å fungere :)

neida, det endrer datatypen midlertidig, right ? (typecast ?)

ps: det er jeg selv som har skrevet den biten, ikke noe jeg hentet fra noe sted... Jeg har lest en stor bok om c++, men har glemt ca. 40 %... derfor spør jeg her for å friske opp kunnskapen, ikke for å få beskjed om å lese alt på nytt ;) Husker mest av det jeg leste sist, så det grunnlegende er borte. Husker mer om f.eks. multiple inheritance osv... :blush:

Endret av Zethyr
Lenke til kommentar

heh.

Det får programmet ditt til å kompilere. Så supert.

Kompilatoren din sier "nei jeg vil ikke ta imot en char*, jeg vil ha en char&"

Når du da caster sier du "det driter jeg i. jeg vet bedre enn deg din dumme kompilator."

Hva med å f.eks gjøre in.get(buffer); eller in.get(*buffer); istedetfor å caste? casting er stygt og det fører til feil når du ikke vet hvordan det funker

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...