tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
867
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    newpipe newpipe ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    3
    Hallo,
    ich sollte in einem Programm ein Konfigurationsfile zum Lesen öffnen.
    Zum einen beinhaltet das File eine gewisse Magic Number ganz am Anfang, anhand welcher festgestellt werden sollte, dass diese Datei die richtige ist. Zum Anderen stehen in dieser Datei auch verschiedene unsigned char welche die eigentlichen Informationen sind.
    Ich habe es mal mit dem folgenden versucht:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
      ifstream file ("example.conf", ios::in|ios::binary|ios::ate);
      if (file.is_open())
      {
        int size;
        size = (int) file.tellg();
        memblock = new char [size];
        file.seekg (0, ios::beg);
        file.read (memblock, size);
        file.close();
        
        cout << "the complete content is in memory";
        
        delete[] memblock;
      }
      else cout << "Unable to open file";
    Leider bin ich aber noch nicht wirklich auf einen grünen Zweig gekommen. Ich lese ja verschiedene Informationen ein, die dann extrahiert werden sollten.

    Wäre super, wenn mir jemand von euch einen Tipp geben könnte.

    MfG,
    newpipe
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    und willkommen bei Tutorials.de

    Was ist denn genau Deine Frage?
    Das habe ich jetzt nicht ganz verstanden!

    gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  3. #3
    newpipe newpipe ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    3
    Einmal danke für deine Antwort.
    Meine Frage ist nun, wie kann ich aus der Datei einzelne Inhalte extrahieren und sie gesondert abspeichern, sodass ich im Nachhinein auf die unterschiedlichen Bereiche des Inhaltes zugreifen kann.
    Der Inhalt sieht folgendermaßen aus:

    -->char[4]
    beinhaltet die "Magic Number"
    -->unsigned char
    -->unsigned char
    -->unsigned char[8][2][2]
    -->unsigned char[höhe][breite]

    MfG,
    newpipe
     

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Hallo,

    mal so aus dem Bauch raus (ungetestet) :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    char cMagicNumber[5];
    memcpy( cMagicNumber, memblock[0], 4); // kopiert die ersten vier Zeichen
    cMagicNumber[4] = 0;
     
    char cVar1 = memblock[4];
    char cVar2 = memblock[5];
     
    usw.

    und das Ganze natürlich VOR dem "delete" ....

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    volerdo volerdo ist offline Grünschnabel
    Registriert seit
    Mar 2007
    Beiträge
    1
    wenn du das file lesen willst, warum übergibst du dan den modus ate? steht das nicht für at the end? wen du da anfängst zu lesen macht das wenig sinn. oder wird dieses attribut übergangen bei dem modus in?
     

  6. #6
    newpipe newpipe ist offline Grünschnabel
    Registriert seit
    May 2009
    Beiträge
    3
    Ich gehe zuerst mal ans Ende um die Filegröße herauszufinden. Anschließend gehe ich mit
    Code :
    1
    
    file.seekg (0, ios::beg);
    wieder an den Anfang
     

  7. #7
    Avatar von devDevil
    devDevil devDevil ist offline Mitglied Platin
    Registriert seit
    Jun 2005
    Beiträge
    662
    Hm also es ist die Frage ob es sich wirklich lohnt, dass du hingehst und den kompletten Inhalt einließt ... einfacher wäre es mit read ... und ansonsten ...
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    
    template<typename _ResultT>
    const _ResultT read(const unsigned char* ptr_array, std::size_t& pos, const std::size_t size)
    {    
        const std::size_t size_of(sizeof(_ResultT));
        pos += size_of;
        return *reinterpret_cast<const _ResultT*>(ptr_array[pos - size_of]);
     }

    Code cpp:
    1
    2
    3
    
    unsigned char* ptr_array = /* zeiger auf Dateiinhalt */;
    std::size_t position(0);
    read(ptr_array, position, /* länge des dateiinhaltes */);
    so kannst du auf die Werte zugreifen ... muss das ?
     

Ähnliche Themen

  1. [c++] binäre Datei richtig interpretieren
    Von Rhyothyn im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 02.03.09, 19:32
  2. Datei öffnen - Lesen - Schreiben
    Von Fridulin im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 17.03.05, 18:44
  3. Binäre Daten lesen/schreiben
    Von grashupfa im Forum PHP
    Antworten: 4
    Letzter Beitrag: 23.02.04, 21:46
  4. Datei öffnen, und lesen
    Von Nicole im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 25.04.03, 16:15
  5. Antworten: 3
    Letzter Beitrag: 02.04.02, 21:07

Stichworte