Saving Objects To A File
BlitzMax Forums/BlitzMax Beginners Area/Saving Objects To A File
| ||
Is there any way to write and load an object to a file besides writing and reading the individual fields by just writing out the contents of the memory it occupies?Any examples would also be helpful. Thanks. |
| ||
XML is your friend. As is MaXML. |
| ||
z80jim, I'm trying exactly the same thing at the moment. I have tried... mynew:Ttest = new Ttest field blah, blah blah end type. local Myptr:byte ptr = byte ptr(mynew) myfile:tStream=writefile("output.dat") for count = 0 to sizeof(mynew) writebyte(myfile,myptr[count] next closefile myfile. <this is from scratch rather than an actual program> However, checking the output file using Hex Editor shows some of the characters transposed. Not sure why yet but it might be the fact I have the wrong field type in my Object (long story). You might want to try it and see what happens but, it's likely, an instance isn't in contiguous memory. <edit> Hmmm, might try... Local mybank:TBank=CreateStaticBank(mynew,SizeOf(mynew)) Local myfile:TStream=WriteStream("decs1.txt") WriteBank(mybank,myfile,0,SizeOf(mynews)) CloseFile myfile |
| ||
Flameduck, great tip on MaXML. Looking forward to checking it out. Probably doesn't save much work because I'm assuming I still have to feed each field to MaXML. But XML is probably a good fit for my rather large and complex save files. |
| ||
I see TStream has a SaveObject() method that doesn't do anything. I suppose one could extend TStream for your object and add a customized writer for it... there's also a LoadObject() method... |
| ||
Check out the TDataStream object in data.mod, it seems most builtin types have a data type. havent tested this myself though ;) |