AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

List<T> serialisieren

Ein Thema von DGL-luke · begonnen am 11. Jan 2006 · letzter Beitrag vom 13. Jan 2006
Antwort Antwort
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#1

List<T> serialisieren

  Alt 11. Jan 2006, 19:34
Hallo,

ich arbeite zwar mit VC#, aber ich denke nicht, dass das ein Problem ist

Kann ich komplette Komponenten einfach serialisieren, sprich ihre Speicherbelegung bzw. ihre Properties in eine Datei speichern und wieder laden? Mir würde es hier im speziellen um eine generische Liste gehen, die ich natürlich inklusive der gehaltenen Instanzen speichern möchte... da .Net ja mehr oder weniger per VM läuft, muss das doch gehen, oder?

Im Notfall muss ichs halt selber machen...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
LarsMiddendorf

Registriert seit: 4. Sep 2003
Ort: Hemer
104 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: List<T> serialisieren

  Alt 11. Jan 2006, 19:44
Speichern:
Code:
BinaryFormatter bf=new BinaryFormatter();
using (Stream st=....)
{
  bf.Serialize(st,obj);
}
Laden:
Code:
BinaryFormatter bf=new BinaryFormatter();
using (Stream st=....)
{
 obj= bf.Deserialize(st,obj);
}
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: List<T> serialisieren

  Alt 11. Jan 2006, 20:30
Wenn einer Klasse das Serializable-Attribut zugeordnet ist (wie es bei List<T> der Fall ist) und keine speziellen Bemerkungen im SDK stehen, kannst du davon ausgehen, dass der gesamte Inhalt serialisiert wird. Wenn du auf Nummer sicher gehen willst, kannst du immer noch unter dem Reflector in der Klasse nach ISerializable und NonSerializedAttribute suchen .

Zitat:
... da .Net ja mehr oder weniger per VM läuft, muss das doch gehen, oder?
Die RTTI kann mit Reflection zwar nicht mithalten, aber einfaches Serialisieren ist doch auch unter Delphi ohne Quasi-VM möglich .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: List<T> serialisieren

  Alt 13. Jan 2006, 14:38
Danke für den weitere Info.

Ja, Delphi kann auch serialisieren...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
DerDan

Registriert seit: 15. Nov 2004
Ort: Donaueschingen
251 Beiträge
 
Delphi XE3 Professional
 
#5

Re: List<T> serialisieren

  Alt 13. Jan 2006, 15:16
Zitat von DGL-luke:
Danke für den weitere Info.

Ja, Delphi kann auch serialisieren...
Und wie geht das da?
nichts ist so schön wie man es sich vorstellt
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.902 Beiträge
 
Delphi 2010 Professional
 
#6

Re: List<T> serialisieren

  Alt 13. Jan 2006, 17:35
Zitat von DerDan:
Zitat von DGL-luke:
Ja, Delphi kann auch serialisieren...
Und wie geht das da?
Um 5 Ecken und 7 Kanten bzw. autom. nur für published Properties. Schaue dir dazu einfach mal die dpCollection oder die DFM eines Formulares an. Mit den Möglichkeiten, die man aus .Net kennt würde ich das nicht wirklich vergleichen wollen.
Robert Giesecke
  Mit Zitat antworten Zitat
dragi

Registriert seit: 22. Jul 2003
198 Beiträge
 
Delphi 2005 Personal
 
#7

Re: List<T> serialisieren

  Alt 13. Jan 2006, 17:45
Ich habe mich mit diesem Thema noch nciht eingehend beschäftigt, welche Anwendungsfälle gibt es um serialisierung zu nutzen? Mir fällt nicht ein wofr man das nutzt. Wäre dankbar für ein paar Anwendungsbeispiele.

Danke

dragi
Delphi 3 Professional @home
Delphi 2005 PE @home
Delphi 2005 Enterprise @work
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: List<T> serialisieren

  Alt 13. Jan 2006, 19:26
Naja, Serialisierung ist eigentlich absolut egal genial: Du nimmt eine komplette Instanz einer Klasse, frierst sie ein, holst dir den bytecode, und wann immer du lust auf TK-Ware hast, holst du sie dir wieder
Kein Rumgemurkse mit Ini-Dateien, einfach einen Listentyp implementieren oder ein Dictionary (für die klassische Key-Value-Zuordnung) und speichern und laden, wie du lustig bist

EDIT: was hab ich denn da verbrochen?!
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#9

Re: List<T> serialisieren

  Alt 13. Jan 2006, 20:33
moin dragi,

um das ganze mit ein bisschen code zu zeigen machen wir mal folgendes wir haben 3 Auto's, die wir in einer liste haben wollen. Die Klasse Auto sieht wie folgt aus
Code:
 
public Auto()
        {
        }
        public Auto(int Index, string Marke, string Kennzeichen)
        {
            this.Index = Index;
            this.Marke = Marke;
            this.Kennzeichen = Kennzeichen;
        }
Nun generieren wir eine Form schmeissen da eine Combobox, eine TextBox und einen Button drauf.

im click des Buttons schreiben wir jetzt:
Code:
List<Auto> autos = new List<Auto>();
            autos.Add(new Auto(1, "Ford",   "ASL - PD 89"));
            autos.Add(new Auto(2, "Mazda", "ASL - BA 169"));
            autos.Add(new Auto(3, "Audi",   "ASL - KH 66"));
           
           
            XmlSerializer mySer = new System.Xml.Serialization.XmlSerializer(typeof(List<Auto>));
            FileStream fs = new FileStream("Auto.xml", FileMode.Create, FileAccess.Write);
            mySer.Serialize(fs, autos);
            fs.Close();
alles meine Auto's
Danach haben wir eine Datei die so:
XML-Code:
<?xml version="1.0"?>
<ArrayOfAuto xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Auto>
    <Marke>Ford</Marke>
    <Kennzeichen>ASL - PD 89</Kennzeichen>
    <Index>1</Index>
  </Auto>
  <Auto>
    <Marke>Mazda</Marke>
    <Kennzeichen>ASL - BA 169</Kennzeichen>
    <Index>2</Index>
  </Auto>
  <Auto>
    <Marke>Audi</Marke>
    <Kennzeichen>ASL - KH 66</Kennzeichen>
    <Index>3</Index>
  </Auto>
</ArrayOfAuto>
aussieht.

wenn du jetz noch folgendes in den Click des Button einfügst hast du das geniale des Databinding vor Augen
Code:
 comboBox1.DataSource = autos;
         tBox_Kennzeichen.DataBindings.Add("Text", autos, "Kennzeichen");
wie kann mann den C# Code formatieren

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf