Re: [Vala] How to write float and double values into a binary file?
- From: Abderrahim Kitouni <a kitouni gmail com>
- To: Aleksander Wabik <alex wabik gmail com>
- Cc: vala-list gnome org
- Subject: Re: [Vala] How to write float and double values into a binary file?
- Date: Sun, 19 Dec 2010 10:15:48 +0100
Hi all,
في س، 18-12-2010 عند 14:47 +0100 ، كتب Aleksander Wabik:
Phil Housley <undeconstructed gmail com> writes:
Aside: The following doesn't work:
public void main() {
float flt = 9.12f;
var output = FileStream.open("./data.txt","w");
output.printf("%f", flt);
float in_flt = 5f;
var input = FileStream.open("./data.txt", "r");
int read = input.scanf("%f", out in_flt);
message("%d %f", read, in_flt);
}
Because in the generated C, the output file isn't closed before
attempting to read. This is a sort-of-bug, as there is no way to
explicitly close a FileStream...
There is a way to close the output file
output = null;
as fclose is declared a free_function for FileStream.
This breaks experimental non-null checking; keeping in mind the word
'experimental' I may suppose, that some day this will not be
experimental any more and will become part of language. (BTW. using
nullable variables is now extremely inconvenient in non-null mode, so
I'd not advise to make 'output' nullable).
Well, you could also declare output as a pointer and explicitly delete
it (but pointer are also inconvenient, as they need -> instead of .),
but the easiest way (and, I believe, the way it's supposed to be used)
is to put it in a separate block, so it goes out-of-scope as soon as
you're finished with it. e.g.
{
var output = new FileStream (...);
// do something with the file
}
// here, as we no longer need the file, it's closed
HTH,
Abderrahim
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]