Mein Programm ließt nur die ersten 25. meiner Datei korrekt ein



  • Hallo!

    Die meisten Dateien ließt mein Programm korrekt aus. Aber bei einer bekomme ich aber immer nur die ersten 25 Zeichen korrekt ausgelesen. Alle folgenden sind immer Null. Woran leigt das?

    Problem-Datei:

    00000000h: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ; ................
    00000010h: 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ; ................
    00000020h: 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F ;  !"#$%&'()*+,-./
    00000030h: 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F ; 0123456789:;<=>?
    00000040h: 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F ; @ABCDEFGHIJKLMNO
    00000050h: 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F ; PQRSTUVWXYZ[]^_
    00000060h: 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F ; `abcdefghijklmno
    00000070h: 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F ; pqrstuvwxyz{|}~
    00000080h: 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F ; €‚ƒ„…†‡ˆ‰Š‹ŒŽ
    00000090h: 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F ; ‘’“”•–—˜™š›œžŸ
    000000a0h: A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF ;  ¡¢£¤¥¦§¨©ª«¬­®¯
    000000b0h: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF ; °±²³´µ¶·¸¹º»¼½¾¿
    000000c0h: C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF ; ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
    000000d0h: D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF ; ÐÑÒÓÔÕÖרÙÚÛÜÝÞß
    000000e0h: E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF ; àáâãäåæçèéêëìíîï
    000000f0h: F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF ; ðñòóôõö÷øùúûüýþÿ
    00000100h: 00 00 00 00 00 00 00 00 00 00 06 05 05 05 05 05 ; ................
    00000110h: 07                                              ; .
    

    Mit dieser Datei hingegen klappt es ohne Probleme:

    00000000h: 30 31 32 33 34 35 36 37 38 39 61 62 63 64 65 66 ; 0123456789abcdef
    00000010h: 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 ; ghijklmnopqrstuv
    00000020h: 77 78 79 7A 41 42 43 44 45 46 47 48 49 4A 4B 4C ; wxyzABCDEFGHIJKL
    00000030h: 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A       ; MNOPQRSTUVWXYZ
    

    Quellcode:

    FDatei.open(SQuelleDateiname, ios::in);
      if (FDatei.is_open() == 0) { 
         konsole("Fehler: Konnte Quelledatei nicht öffnen.\n"); 
         system("PAUSE");	
         exit(0);
      }
      else {
    
         FDatei.seekg(0, ios::end);
         ILaengeQuelle = FDatei.tellg();
         AQuelle = new unsigned char[ILaengeQuelle]; 
         AZiel = new unsigned char[ILaengeQuelle];
    
         FDatei.seekg(0, ios::beg);
    
         FDatei.read((char*)AQuelle, ILaengeQuelle);
         for (unsigned long i=0; i<ILaengeQuelle; ++i) { cout << i << " " << (int)AQuelle[i] << endl; }
    
      }
      FDatei.close();
    

    Viele Grüße
    pmw



  • Hi,

    ich habe deinen Quelltext nur mal eben überflogen, und festgestellt das du Binär daten im Text-Modus einlesen willst das macht der natürlich nicht mit daher würde ich sagen du öffnest den File-Stream so:

    FDatei.open(SQuelleDateiname, ios::in | ios::binary );
    

    dann müsste es klappen.
    Könnte auch nen anderen grund haben sollte es nicht funktionieren melde dich dann befasse ich mich noch mal damit.
    MfG



  • Danke! Das war die Lösung.


Anmelden zum Antworten