Datei binär lesen in C#

Dieses Thema Datei binär lesen in C# im Forum "Windows XP Forum" wurde erstellt von Rassamie, 29. März 2005.

Thema: Datei binär lesen in C# Ich habe eine Datei die binär weggeschrieben wurde (mit einem Programm in c++ 6.0) nun muss ich die Datei einlesen...

  1. Ich habe eine Datei die binär weggeschrieben wurde (mit einem Programm in c++ 6.0) nun muss ich die Datei einlesen mit C#. Dabei ist der folgende Codeverwednet worden um die Datei in C++ zu lesen:

    ....

                // Lesen des Keys
                pAr->ReadString(Key);
                // Lesen des Datentyps
                VARTYPE vType;
                _variant_t vData;
                pAr->Read(&vType,sizeof(vType));
               // Aus Kompatibilitätsgründen händisch
              if (!loadSingleAttribute(pAr,vType,vData))
    {
    CAttributesCollection::Error(IDSERR_0007);
    return E_FAIL;
    }

    .....

    bool CAttributesCollection::loadSingleAttribute(CArchive *pAr, VARTYPE vType, _variant_t& value)
    {
    USES_CONVERSION;

    // Lesen der Daten
    switch (vType)
    {
    case VT_BSTR:
    {
    char *Buffer;
    short len;
    pAr->Read(&len,sizeof(len));
    Buffer=new char[len+1];
    pAr->Read(Buffer,len);
    *(Buffer+len)='\0';
    value=_variant_t(_bstr_t(Buffer));
    delete[] Buffer;
    break;
    }
    case VT_I4:
    {
    long lData;
    pAr->Read(&lData,sizeof(lData));
    value=_variant_t(lData,VT_I4);
    break;
    }
    case VT_I2:
    {
    short iData;
    pAr->Read(&iData,sizeof(iData));
    value=_variant_t(iData,VT_I2);
    break;
    }
    case VT_R8:
    {
    double dData;
    pAr->Read(&dData,sizeof(dData));
    value=_variant_t(dData,VT_R8);
    break;
    }
    case VT_BOOL:
    {
    bool bData;
    pAr->Read(&bData,sizeof(bData));
    value=_variant_t(bData);
    break;
    }
    case VT_DECIMAL:
    {
    DECIMAL decData;
    pAr->Read(&decData,sizeof(decData));
    value=_variant_t(decData);
    break;
    }
    case VT_NULL:
    value.vt=VT_NULL;
    break; // Nichts weiter zu lesen
    case VT_EMPTY:
    value.vt=VT_EMPTY;
    break; // Nichts weiter zu lesen
    default:
    return false;
    }

    return true;
    }

    ......

    Ich habe nun folgendes in C#:
            // Datei öffnen     
            System.IO.FileStream   fs       = new System.IO.FileStream this.Name,System.IO.FileMode.Open,System.IO.FileAccess.Read);
            System.IO.BinaryReader myReader = new System.IO.BinaryReader(fs);

            // Attribute der Datensicht einlesen
            long numAtts = myReader.ReadInt32();
            if (numAtts>0)
            {
              for (int AttsIndex=0;AttsIndex<numAtts;AttsIndex++)
              {
                // Lesen des Keys
                string Key = myReader.ReadString();

    Die Anzahl wird denke ich noch richtig gelesen aber der erste String stimmt schon nicht mehr da is der Rest der Datei drinn. Ich hab mal im Hex-Editor nachgesehen nach dem String steht immer 0A ist das hier keine gültige Terminierung für den String? und wenn nein was muss ich nun machen anstatt. ODer muss ich ganz anders ans Werk gehen?

    Mit bestem Dank im Voraus
    Markus
     
Die Seite wird geladen...

Datei binär lesen in C# - Ähnliche Themen

Forum Datum
"MACBINARY" Dateien konvertieren Windows XP Forum 3. Feb. 2004
EXE-Dateien nach einer Zeit nicht mehr ausführbar Windows 8 Forum Sonntag um 21:21 Uhr
Dateien mit bestimmten Programmen öffnen, z.B. pdf oder jpg Windows 10 Forum 10. Nov. 2016
Open Office Datei direkt versenden funktioniert nicht .... Windows 10 Forum 31. Okt. 2016
Die Version dieser Datei ist nicht mit der ausgeführten Windowsversion kompatibel Windows 7 Forum 21. Okt. 2016