BinaryWriter und struct ??



  • Hallo,
    ich bin neu bei VS2008(CLR/CLI), habe aber schon mit BCB2007 gearbeitet.
    Nun meine Frage:
    ich habe in BCB z.B. eine Struct angelegt

    struct 
    {
       int x;
       char y[4];
       .
       .
    }Test;
    

    danach konnte ich den gesamte 'Block' der struct mit 'einem Rutch' in eine binär Datei schreiben oder auch lesen.

    xxxx->Write(&Test,sizeof(Test));
    

    wie kann ich soetwas in CLR/CLI verwirklichen (z.B. BinaryWriter ?)?
    ist das überhaupt möglich ?
    oder muß ich wie gewohnt native Klassen benutzen ?
    Wäre nett, wenn ich da etwas Licht ins Dunkel bekommen könnte.

    Danke



  • Nun, mit .NET geht die Typsicherheit vor und es gibt keine Möglichkeit, sowas direkt zu schreiben und/oder zu lesen. Du musst schon auf die einzelnen Werte zugreifen. Was du eventuell in Betracht ziehen kannst ist die Verwendung von Serialization mit einem Binary Formatter. Das ist eine sehr elegante Möglichkeit, Daten irgendwo abzulegen ohne sich um das Wie kümmern zu müssen.

    MfG



  • Danke für die Antwort und den Hinweis (Serialization mit einem Binary Formatter). Da ich noch nicht soweit vorgedrungen bin, muß ich mal suchen wo ich dazu etwas finde.



  • nochmal ich 🙂
    hab mir das mal angesehen und auch ein Beispiel ausgeführt.

    [Serializable]
    ref struct xx
    {
    	int a;
    	int b;
    	String^ sS;
    };
    //-----------------------------------------------
    
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
    	{
    		BinaryFormatter^ bf = gcnew BinaryFormatter;
    		xx^ x = gcnew xx;
    		x->a = 0x4E505A31;
    		x->b = 20;
    		x->sS = "Hallo";
    		FileStream^ fs = gcnew FileStream("c:\\xxxxxx.txt",FileMode::Create);
    		bf->Serialize(fs,x);
    		fs->Close();
    	}
    

    Ich glaube, das ist nicht das was ich wollte. Ich wollte NUR die internen Variabel-Werte der struct xx (a,b,sS) in der Datei haben, da diese in Verbindung mit anderen eine neue Binär-Datei ergeben sollen.
    Werde dann wohl doch über den BinaryWriter/Reader einzeln gehen müssen -> schade.
    Gerade beim Aus,Ein-lesen von Binär-Dateien, die nicht nur einen simplen Header besitzen, ist eine Struct sehr übersichtlich und dann leicht zu schreiben oder lesen.
    Man kann ja trotzden eine struct anlegen (der Übersichtlichkeit wegen) und dann die einzelnen Werte ansprechen, ist halt dann umständlich 😞


Anmelden zum Antworten