Variablen/Felder in/aus Datei importieren/eportieren



  • Hallo, ich bin neu hier. Ich studiere Informatik und verwende Visual C++ 2005 Express Edition für ein Studentenprojekt.

    Nachdem ich nun schon eine Weile mit Suchen verbracht habe, aber leider nichts wirklich passendes gefunden habe stelle ich mein Problem mal hier.

    Ich habe ein kleines Tool entworfen, mit Tabpages zum umschalten. Ansonsten besteht es hauptsächlich aus Textboxen.

    Nun möchte ich einfach die Werte der den Textboxen zugewiesenen Variablen in/aus Dateien importieren/eportieren. Kenne nur Visual Studio 7, da gab es die MFC Klassen und SDI, MDI. Dort hatte man eine Document- und eine View Klasse, habe das im 4. Semester mal eine Zeit lang benutzt. Irgendwie durchschaue ich das nicht so richtig bei VC++ 2005. Habe eine "Windows Forms" Anwendung erstellt, SDI,MDI gabs irgendwie nicht mehr.

    Meine eigentliche Frage: Wie manage ich GUI und Daten mit VC++ 2005 sinnvoll, also am besten sauber getrennt voneinander, so das man gut importieren und exportieren kann und alles sauber und gut erweiterbar bleibt? Vielleicht könnt ihr mir ein paar hilfreiche Links posten wie das mit VC++ 2005 am sinnvollsten gemacht wird. Bin leider noch recht neu in der Materie und finde mich allein kaum zurecht im Dschungel 😕



  • Das einfachste ist Du legst Deine Daten in Klassen ab und speicherst diese Klassen via XmlSerializer.

    PS: Auch würde ich Dir eher zu C# raten, da dies einfache rist mit .NET. Du machst eh kein C++, sondern C++/CLI!



  • Hi, vielen Dank für die schnelle Antwort. Wo bekomme ich den XML Serializer, ist das eine Standardmethode? Hab Sie grad im VC++ gesucht aber bis jetzt nicht gefunden. Ist das dann auch ein DeSerializer zugleich(fürs Laden)?

    Habe jetzt leider schon einiges mit den WindowsForms gemacht, also die GUI ist schon recht umfangreich nur bis jetzt ohne Funktion. Kann ich das noch so einfach auf C# umstellen (und wenn ja wie)?



  • Du musst nach einer Klasse System::Xml::Serialization::XmlSerializer suchen, in einem Assembly namens System.Xml. Gegebenenfalls musst du zuerst einen Verweis darauf machen, sonst weiss die Hilfe nicht um was es geht. Noch einfacher und ohne Verweise auf weitere Assemblies geht es mit System::Runtime::Serialization::Formatters::Binary::BinaryFormatter von mscorlib.

    using namespace System::Runtime::Serialization::Formatters::Binary;
    
    BinaryFormatter bf;
    bf.Serialize(deinStream, deinObjekt);
    deinObjekt = bf.Deserialize(deinStream);
    

    Allerdings hast du dann die einfache Editierbarkeit von Xml verloren und speicherst deine Daten binär.

    Was den Wechsel zu C# betrifft: Wenn du schon weit fortgeschritten bist mit deiner Anwendung, dann solltest du das nicht versuchen, insbesondere wenn du mit Formdesigner arbeitest. C++/CLI ist im Prinzip nicht "schwieriger" als C#, es bietet dem Programmierer mehr Möglichkeiten, allerdings zu einem bestimmten Preis. Manche Dinge können auf den "Anfänger" ein wenig verwirrend wirken. Wie ich höre (lese 😃 ) hast du aber bereits mit C++ programmiert und da ist vlt. C++/CLI sogar die bessere Wahl.



  • Super, danke! Ich werds mal ausprobieren. Binär ist nicht so gut, ich probier erst mal die XML-Variante...



  • pocketom schrieb:

    Kann ich das noch so einfach auf C# umstellen (und wenn ja wie)?

    Eigentlich brauchst du gar nichts umstellen, da du dir die gesamte Funktionalität auch einfach in ner C# dll kapseln kannst und diese Funktionen nur noch von der GUi aufrufst.



  • Ich würde System::Xml::Serializer verwenden. Das Beispiel mit dem Binary ist eigentlich nur für SOAP gedacht und nicht zur direkten verwendeung geeingnet. Auch ist die "Syntax" der Klasse (bzw. Attribute) und die Art-und-Weise der serialisierung komplett anders!

    Beispiele gibt es massenweise:
    http://www.codeproject.com/csharp/cardfileserializationdemo.asp
    http://www.codeproject.com/csharp/xml_serializationasp.asp


Anmelden zum Antworten