FileSize =streamoff(FileBin.tellg()); nahezu immer 0



  • Hi zusammen ich hab mit folgendem Code Probleme:

    FileBin.seekg(0, ios::end); 
            FileSize = streamoff(FileBin.tellg()); 
            FileBin.seekg(0, ios::beg);
    

    Dieser Code ist aus der FAQ und das drum herum findet man hier entstanden.
    Ganz kurz, es geht drum eine WAV Datei einzulesen, und die Binären Daten in Shorts um zu wandeln.
    Ich habe es mit einem Testfile auch alles erfolgreich mit eurer Hilfe hinbekommen, doch jetzt wo ich mal ein anderes File (100%ig nur der Datachunk anders Samplerate etc. alles exact identisch) genommen hab, krieg ich bei obigem Source IMMER 0 raus. (Hab 8 verscheidene Probiert immer 0)
    Kann mir einer erklären wo mein Fehler liegt? Wenn ich wieder das erst versuchte nehme zeigt er mir Filesize richtig an.

    Vielen Dank schon im Voraus



  • Welchen Datentyp hat denn FileSize bei dir, sollte auf jeden Fall ein int32 sein? Hast du denn die Datei auch binär geöffnet?



  • Warum benutzt du kein CFile wenn du schon die MFC nutzt?
    Da hättest du CFile::getLength() zur verfügung.

    edit:
    Ich habs mal bei mir getestet und mit deinem Code keinerlei Probleme gehabt.

    void load(unsigned long&);
    
    int main()
    {   
       unsigned long FileSize;
       load(FileSize);
    
       system("pause");
       return 0;
    }
    
    void load(unsigned long& FileSize){
    	fstream FileBin("od.gif", ios::in|ios::out|ios::binary);
    	if (FileBin.is_open())
        {
    		FileBin.seekg(0, ios::end);
    		FileSize = streamoff(FileBin.tellg());
    		FileBin.seekg(0, ios::beg); 
    		cout << FileSize;
    	}else{
    	   cout << "cannot open";
    	}
    }
    

    Vielleicht gibst du mal ne Beispiel Datei.



  • Hi tut mir leid dass ich mich erst jetzt wieder melde, bin am WE aber leider zu nichts gekommen. Beispiel? [EDIT]LINK rausgenommen[/EDIT]
    Kleines Beispielprojekt, bei dem für file 1 der richtige Wert raus kommt und für File 2 immer der selbe Wert.
    Vielen Dank an alle die es sich mal anschaun

    [Edit] Es geht jetzt, der hatte mir da tatsächlich ein neues File mit 0Byte erzeugt, und dass ich da nichts vernünftiges bekomm ist klar. [/Edit]



  • Polofreak schrieb:

    Kleines Beispielprojekt, bei dem für file 1 der richtige Wert raus kommt und für File 2 immer der selbe Wert.

    Ist dir klar, dass du Dateien im Hauptverzeichnis bearbeitest, nicht die im Projektverzeichnis?



  • öhm nein aber so oder .\\test.wav

    naja aber jedenfalls ändert sich aber leider auch nichts dran. er scheint ja was zu öffnen bringt aber immer 205 für File 2
    warum?



  • Wenn ich es so öffne gehts:

    fstream FileBin(".\\test2.wav", ios::in|ios::out|ios::binary);
    	m_Wavefile = FileBin;
    

Anmelden zum Antworten