Jag sparar "serializerade" objekt i en fil och läser in från denna fil med hjälp av FileStream och BinaryFormatter.FileStream
Koden verkade fungera , men visar sig vara ngt opålitlig. Dock är det svårt att framkalla felet vid testning, men jag tror att det sist inlästa objektet var tomt.
Kan det hjälpa att initiera FileStream med angiven och mindre än default buffert?
Dessutom undrar jag om det inte vore bättre att först lägga objekten i t ex en ArrayList och sedan spara den. Googlar man så verkar de flesta lösningar vara så.
Koden:
StringDictionary* Save::GetDictionary()
{
FileStream* fstrm = new FileStream(path, FileMode::OpenOrCreate, FileAccess::Read);
BinaryFormatter* bf = new BinaryFormatter();
Ansokan* theObject = new Ansokan();
String* nr, *name;
theDictionary = new StringDictionary();
try
{
while ( fstrm->Length != fstrm->Position )
{
theObject = dynamic_cast<Ansokan*>(bf->Deserialize(fstrm));
nr = theObject->get_Number();
name = theObject->get_Name();
theDictionary->Add(nr, name);
}
}
catch ( System::Exception* pe )
{
MessageBox::Show(pe->ToString());
}
fstrm->Close();
return theDictionary;
}
MVH
Lasse L