Hello all, I have been looking at Phobos lately, and currently I am having some trouble understanding what is going on with the following 2 trivial examples. First of all, I am using dmd v1.050.
This one prints "[‼ This is some stuff!]". Where do the 4 prepended bytes come from? (1) ----------------------------------------------------------------> import std.stream; import std.stdio; int main() { char[] stuff = "This is some stuff!"; File f = new File("stuff.txt", FileMode.Out | FileMode.In); f.write(stuff); f.seekSet(0); stuff = f.readLine(); writef("[%s]", stuff); f.close; return 0; } This one I wanted to have a class open a file upon initialization of an instance, and close a file when the destructor is called. I get an "Error: Access Violation" unless I comment out the file.close line. Why? (of course this example also has the same problem as the first example, but I kept the first one simpler to narrow down things) (2) ----------------------------------------------------------------> import std.stream; public class StuffWriter { File file; this(char[] filename) { file = new File(filename, FileMode.Out); } ~this() { file.close; //this causes an access violation??? } public void write(char[] stuff) { file.write(stuff); } } int main() { StuffWriter sw = new StuffWriter("stuff.txt"); sw.write("This is some stuff!"); return 0; } Thanks! Zane