www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - void buffer

reply Manfred Hansen <m.hansen kielnet.net> writes:
Hello,

the prorgramm under linux dmd 2.007 
 
import std.file;
import std.stdio;

int main() {
        string str1 = "Zeile 1\n", str2 = "Zeile 2 \n";
        const(void)[] buf;

        buf ~= str1; buf ~= str2;
        write("test_neu.txt",buf);

        return 0;
}

gives an error:

~/dd/dmd/src/phobos/std/format.d(1983): variable std.format.formatGeneric
(FileWriter!(char),const(           void)[]).formatGeneric.e voids have no
value

Have someone an idea to fix this.

manni
Nov 03 2007
parent reply Nathan Reed <nathaniel.reed gmail.com> writes:
Manfred Hansen wrote:
 Hello,
 
 the prorgramm under linux dmd 2.007 
  
 import std.file;
 import std.stdio;
 
 int main() {
         string str1 = "Zeile 1\n", str2 = "Zeile 2 \n";
         const(void)[] buf;
 
         buf ~= str1; buf ~= str2;
         write("test_neu.txt",buf);
 
         return 0;
 }
 
 gives an error:
 
 ~/dd/dmd/src/phobos/std/format.d(1983): variable std.format.formatGeneric
 (FileWriter!(char),const(           void)[]).formatGeneric.e voids have no
 value
 
 Have someone an idea to fix this.
 
 manni

You can't directly write out a void array, the standard library doesn't know how to do that since a void array basically means "I don't know what the type(s) of this data is/are". You'll have to cast it to string before you can write it. Thanks, Nathan Reed
Nov 03 2007
parent reply Manfred Hansen <m.hansen kielnet.net> writes:
Nathan Reed wrote:

 Manfred Hansen wrote:
 Hello,
 
 the prorgramm under linux dmd 2.007
  
 import std.file;
 import std.stdio;
 
 int main() {
         string str1 = "Zeile 1\n", str2 = "Zeile 2 \n";
         const(void)[] buf;
 
         buf ~= str1; buf ~= str2;
         write("test_neu.txt",buf);
 
         return 0;
 }
 
 gives an error:
 
 ~/dd/dmd/src/phobos/std/format.d(1983): variable std.format.formatGeneric
 (FileWriter!(char),const(           void)[]).formatGeneric.e voids have
 no value
 
 Have someone an idea to fix this.
 
 manni

You can't directly write out a void array, the standard library doesn't know how to do that since a void array basically means "I don't know what the type(s) of this data is/are". You'll have to cast it to string before you can write it. Thanks, Nathan Reed

This example run with dmd 2.002 . I believe there has someting change in const/infariant situation. The write method in std.file (line 147) look like void write(in string name, const void[] buffer) This is what i want. Sincerely manni
Nov 03 2007
parent Carlos Santander <csantander619 gmail.com> writes:
Manfred Hansen escribió:
 Nathan Reed wrote:
 
 Manfred Hansen wrote:
 Hello,

 the prorgramm under linux dmd 2.007
  
 import std.file;
 import std.stdio;

 int main() {
         string str1 = "Zeile 1\n", str2 = "Zeile 2 \n";
         const(void)[] buf;

         buf ~= str1; buf ~= str2;
         write("test_neu.txt",buf);

         return 0;
 }

 gives an error:

 ~/dd/dmd/src/phobos/std/format.d(1983): variable std.format.formatGeneric
 (FileWriter!(char),const(           void)[]).formatGeneric.e voids have
 no value

 Have someone an idea to fix this.

 manni

know how to do that since a void array basically means "I don't know what the type(s) of this data is/are". You'll have to cast it to string before you can write it. Thanks, Nathan Reed

This example run with dmd 2.002 . I believe there has someting change in const/infariant situation. The write method in std.file (line 147) look like void write(in string name, const void[] buffer) This is what i want. Sincerely manni

In that case, use "std.file.write", or "alias std.file.write write" in your module. -- Carlos Santander Bernal
Nov 03 2007