jeg får failbit og eofbit

Tags:    c++

Hej
Jeg har lavet en kode der skulle åbne en fil, checke om den er ok, læse alle linier til eof og så ellers lukke den igen.
Koden er en kopi af: http://www.cplusplus.com/reference/iostream/ios/exceptions.html

Jeg får failbit, og hvis jeg fjerner den fra file.exceptions, så får jeg oefbit.

Jeg startede med at teste det, på en ret stor fil, men nu har jeg lavet opcodes.txt om til en fil på to linier med tekst og en tom linie i bunden. Jeg har gemt den som standard notepad dokument, så den er vel i ANSI format.

Håber i har et bud
Mvh
Carsten

PS: er der ikke en måde at få mere information fra den kastede exception?

Her er min kode: (filstien er: c:\\\\opcodes.txt ikke i min kode. ikke c:\\opcodes.txt som det fremgår i nedenstående
Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 27.10.2007 13:41 af Bruger #12570
5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Jeg har aldrig brugt exceptions med std::fstream, så den del kan jeg ikke rigtig svare på.

Jeg undrer mig lidt over hvad formålet med din kode skulle være. Du skriver at du vil "checke om den er ok", hvordan skulle den kunne være ikke ok?



Jeg undrer mig lidt over hvad formålet med din kode skulle være. Du skriver at du vil "checke om den er ok", hvordan skulle den kunne være ikke ok?


Hvis filen ikke kan åbnes, er beskadiget, er eof eller sådan.

Mit kode opfører sig i det hele taget lidt mærkeligt. Det er som om eof bliver ignoreret.
(hvis jeg kommenterer file.exceptions linien ud)

Du skriver du aldrig har brugt exception med fstream - er der da en mere almindelig måde at tjekke streams?

/Carsten



Indlæg senest redigeret d. 27.10.2007 15:48 af Bruger #12570
Nårmalt forsøger man bare at åbne filen, går det ikke fortæller man brugeren det.
Så læser man fra filen så længe det går godt.

I nogle tilfælde, laver man et check mærke sidst i filen, ved binære filer f.eks. en CRC.

Medmindre applikationen er meget kritisk og/eller skal kunne håndtere usikre diske, er det imho fuldt tilstrækkeligt.



Hvad hvis programmet er afhængig af de data det henter i filen. Så er det vel vigtigt at kunne kaste nogle oplysninger til brugeren?

/Carsten

PS: nu har jeg ændret
while(!file.eof()) til while(file) - det fungerer



Det er ofte nødvendigt med et check af om den fil man åbner indeholder det rigtige, at det er en hel fil, osv.

Men i disse tilfælde er det ofte bedre at skrive nogle check-marks ind i filen, som beskrevet ovenfor.
Selv om der ikke kastes nogen exceptions under læsningen kan filen let være korrupt på mange forskellige måder.



t