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 datachar[] 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.
