On Monday, 26 August 2013 at 18:02:51 UTC, Adam D. Ruppe wrote:
To to bring it together:

import std.c.windows.windows;

// use the unicode version of the Windows function
extern (Windows) bool CharToOemW(const wchar*, char*);
alias CharToOemW CharToOem;


public void PutStringIntoConsole(string text)
{
        // convert source into a Windows tchar* string
        import std.utf;
        auto source = toUTF16z(text);

// prepare our buffer with enough space to receive the data
        char[] dest = new char[](text.length * 2);

        // call the function...
        CharToOem(source, dest.ptr);

// we also want to get the length out instead of relying on zero termination for a real D string:
        import core.stdc.string;
        dest = dest[0 .. strlen(dest.ptr)];

        writeln(dest);
}


It works,

        char[] dest;

        CharToOem(source.ptr, dest.ptr);

And this will give you an AccessViolation if you run it because dest is null.

For the array, it is my fault an error of inattention ^^

Thank for your explanation and your help.

Quentin.

Reply via email to