www.mikrocontroller.net

Forum: PC-Programmierung serialisieren eines Array von Klassen


Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich habe hier einen C# codeausschnitt und versuche den in C++ .net um 
zuschreiben. Bis auf das Serialisieren des Arrays geht alles. Wenn ich 
aber den Arrayzeiger zum serialisieren übergebe kommt ne Fehlermeldung.

hier mal der C# Code:

{
  Person[] personen = new Person[2] { new ......}

  XMLSeriializer serializer = new XMLSerializer(typeof(Person[]));
  TextWriter tr = new StremWriter("A.xml");
  serializer.Serialize(tr, personen);
  tr.close();
}


public class Person
{
  public Person(string name, int alter)
 {
  ...
 }
}

Autor: harle (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

der äquivalente C++ .NET(2005) Code sollte so aussehen :

{
array<Person^> ^personen = gcnew array<Person^>(2) { gcnew ... };

XmlSerializer ^serializer = gcnew XmlSerializer(array<Person^>::typeid);
TextWriter ^tr = gcnew StreamWriter("A.xml");
serializer->Serialize(tr, personen);
tr->Close();
}

Gruß

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
besten Dank harle

werd es dann gleich mal ausprobieren

Power

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also das serialisieren geht jetztsuper.
Leider habe ich ein ähnliches Problem be deserialisieren.
Ich hoffe harle hat auch dafür ne Idee.

Hier der C# Code

Person[] personen = (Person[])serializer.Derzerialize(tr);

mit array<Person^> personen = (array<Person^>) 
serializer->Derzerialize(tr);
gehts leider nicht


Power

Autor: Harald Lehn (harle)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
meine Idee ...

XmlSerializer ^serializer = gcnew XmlSerializer(array<Person^>::typeid);
TextReader ^tr = gcnew StreamReader("B.xml");
array<Person^> ^personen = nullptr;
try
{
  personen = safe_cast<array<Person^>>( serializer->Deserialize(tr) );
}
catch(InvalidCastException^)
{
  Console::WriteLine("Cast hat nicht geklappt");
}


harle

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort

werd es mal ausprobieren.

Power

Autor: Power (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Harald geht wunderbar

Power

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.