🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #3461

Re: struct als buffer (c#)

#3461
From: Luc Kumps
Date: Mon, 08 Dec 2003 09:44
54 lines
2898 bytes
Johan wrote:
> hey iedereen,
>
> iedereen weet (c/c++ programmeur) dat je data van een bestand
> rechtstreeks in een struct kan laden. dus een struct als een buffer
> gebruiken.
>
> weet iemand hoe ik dit kan klaarspelen in c#?
> ik gebruik een filestream met daarrond een binaryreader,
> maar de .read methode van binaryreader verwacht een byte[] buffer.
> casten help niet, dan krijg ik foutmeldingen omdat "struct test" niet
> kan geconverteerd worden naar byte [].

Je zou eens een blik kunnen werpen op XmlSerializer.

Stel, je hebt een class Settings als volgt:

 public class Settings
 {
  public int a,b,c,d;
  public byte [] data;
  public string s;
};

En je hebt
  Settings s;

Dan kun je s wegschrijven in een bestand "Config.Xml" m.b.v.
//OPGEPAST - NIET GETESTE CODE
    StreamWriter myWriter =new StreamWriter("Config.Xml",false);
    XmlSerializer mySerializer =new XmlSerializer(typeof(Settings));
     mySerializer.Serialize(myWriter, s);

Inlezen gaat dan met:
//OPGEPAST - NIET GETESTE CODE
    FileInfo fi = new FileInfo("Config.Xml");
    if(fi.Exists)  {
       FileStream myFileStream = fi.OpenRead();
      XmlSerializer mySerializer = new XmlSerializer(typeof(Settings));
       s = (OurSettings)mySerializer.Deserialize( myFileStream);
    }


Alle error handling moet natuurlijk nog toegevoegd worden, en een Close van
de FileStream ook...

Voordeel is dat je eender welke Xml Viewer (bv. Internet Explorer) kunt
gebruiken om je gegevens te bekijken.
Nadeel is dat alles tussen text en binary moet worden geconverteerd. Maar
voor 1 miezerige struct kan dat geen bezwaar zijn. Als je echter een paar
miljoen van deze structs moet schrijven/lezen kun je misschien beter naar
wat anders uitkijken...

Luc K
Technical Details
Message-ID: <hKXAb.66398$7k7.2474013@phobos.telenet-ops.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!fr.ip.ndsoftware.net!193.190.198.58.MISMATCH!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail
References: <PJNAb.65843$%S1.2680858@phobos.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,7b5f2d8d77f51b03
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2003-12-08 01:44:45 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news2.google.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!newsfeed.freenet.de!fr.ip.ndsoftware.net!193.190.198.58.MISMATCH!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail
From: "Luc Kumps" <NOkumpsSPAM@pandora.be>
Newsgroups: be.comp.programming
References: <PJNAb.65843$%S1.2680858@phobos.telenet-ops.be>
Subject: Re: struct als buffer (c#)
Lines: 56
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Message-ID: <hKXAb.66398$7k7.2474013@phobos.telenet-ops.be>
Date: Mon, 08 Dec 2003 09:44:45 GMT
NNTP-Posting-Host: 213.118.67.120
X-Complaints-To: abuse@telenet.be
X-Trace: phobos.telenet-ops.be 1070876685 213.118.67.120 (Mon, 08 Dec 2003 10:44:45 MET)
NNTP-Posting-Date: Mon, 08 Dec 2003 10:44:45 MET
Organization: Telenet Internet