I first started with a Windows message box program and installing an IDE. I'm now using the VisualD plug-in with the Visual Studio 10 Shell, after battling a bit with installation of service pack 1 for Visual Studio. VisualD works, sort of, except the devs forgot that the resource compiler needs an INCLUDE variable so that it finds <windows.h>, so, silly as it is, the VisualD plugin can't be used directly as-is to create a modern look and feel Windows program. I solved it by running Visual Studio from the command line.

Anyway, I haven't yet started delving into the language documentation or any tutorials, just used gut-feeling, so I'd appreciate discussion of how to make this my first D console program less non-idiomatic <g>:


<code>
import std.stdio;
import std.ascii;
import std.string;            // chop

//import core.sys.windows.unicode_based_api;    <-- DOES NOT WORK.

char lastCh( string s )
{
    return (s.length == 0? '\0' : s[s.length - 1]);
}

void main()
{
    char[]    buf;

    writeln( "module core.sys.windows.unicode_api;" );
    writeln( "import core.sys.windows.windows;" );
    while( stdin.readln( buf ) )
    {
        string    identifier;
        bool    inIdentifier    = false;

        foreach( char c; buf )
        {
            if( isAlpha( c ) )
            {
                if( !inIdentifier ) { identifier = ""; }
                identifier ~= c;
                inIdentifier = true;
            }
            else if( c == '_' || isDigit( c ) )
            {
                if( inIdentifier )
                {
                    identifier ~= c;
                }
            }
            else
            {
                inIdentifier = false;
                if( isWhite( c ) )
                {
                    // Ignore.
                }
                else
                {
                    if( c == '(' && lastCh( identifier ) == 'W' )
                    {
immutable string name = chop( identifier ); // removes last char
                        writeln( "alias ", identifier, " ", name, ";" );
                    }
                    identifier = "";
                }
            }
        }
    }
}
</code>

The problem is, I can't manage to build the generated module.

The compiler is protesting something about the module being in a source code file that it can't read.

E.g. with "import unicode_based_api;" it exclaims,

<eror>
Error 1 Error: module unicode_based_api is in file 'unicode_based_api.d' which cannot be read d:\winfolders\alf\my documents\visual studio 2010\Projects\GenWinFuncAliases\GenWinFuncAliases\main.d 5
</eror>

?


Cheers,

- Alf

Reply via email to