D1: Passing 0x00000000 value to a Windows COM function
jicman
cabrera_ at _wrc.xerox.com
Mon Aug 20 20:05:54 PDT 2012
== Quote from jicman (cabrera_ at _wrc.xerox.com)'s article
> == Quote from torhu (no at spam.invalid)'s article
> > On 20.08.2012 00:43, jicman wrote:
> > >
> > > Greetings.
> > >
> > > I am trying to pass a (I think) dchar value to a Windows COM
> > > function and it does not work. Imagine this situation...
> > >
> > > dchar test()
> > > {
> > > dchar val = 0x00000000;
> > > return val
> > > }
> > >
> > > void main()
> > > {
> > > ...lots of code excluded
> > > SomeWindowsComCall(test); // this call does not work
> > > SomeWindowsComCall(0x00000000); // this call works
> > > }
> > >
> > > Any idea how I can create a function to be able to return
values
> > > such as 0x00000000 .. 0x0000FFFF?
> > It's easier to help if you post an actual, compilable example.
As
> small
> > as possible. Because the code you posted doesn't show any real
> > possibility of bugs, barring compiler bugs.
> Hi Torhu. Thanks for the reply, but this is an old and working
setup
> using the Juno project. So, you'll need to install the Juno
project,
> http://dsource.org/projects/juno
> and the Trados 2007 Translation software which I am pretty sure you
> won't because it is very expensive. :-) The sample provide is
simple
> and it has no bug. Don-t forget that I said that I am passing that
> value to a Windows COM call using Juno, but I think that the
> returning value from the test function is not really returning
> 0x00000000 to the COM call. This is the actual subroutine that
> returns the value,
> dchar GetSourceLanguageEnumaration(char[] lang)
> {
> // *** STaggerF.SourceLanguage Enumeration ***
> dchar sl = 0x00000000;
> lang = std.string.tolower(lang);
> //msgBox(lang);
> switch(lang)
> {
> case "sq", "sq-al": // stfTargetLanguageAlbanian = 0x00000000,
> sl = 0x00000000;
> break;
> case "eu", "eu-es": // stfTargetLanguageBasque = 0x00000001,
> sl = 0x00000001;
> break;
> case "bg", "bg-bg": // stfTargetLanguageBulgarian = 0x00000002,
> sl = 0x00000002;
> break;
> case "be", "be-by": // stfTargetLanguageByelorussian =
> 0x00000003,
> sl = 0x00000003;
> break;
> case "ca", "ca-es": // stfTargetLanguageCatalan = 0x00000004,
> sl = 0x00000004;
> break;
> case "zh-cn": //= 5; //stfTargetLanguageChineseSimplified
> sl = 0x00000005;
> break;
> case "zh-tw": // = 6; //stfTargetLanguageChineseTraditional
> sl = 0x00000006;
> break;
> case "nl", "nl-nl": //stfTargetLanguageDutch = 0x0000000A,
> sl = 0x0000000A;
> break;
> case "en-gb": // stfTargetLanguageEnglishUk = 0x0000000B,
> sl = 0x0000000B;
> break;
> case "en", "en-us": // stfTargetLanguageEnglishUs = 0x0000000C,
> sl = 0x0000000C;
> break;
> case "fr", "fr-fr": // stfTargetLanguageFrench = 0x00000010,
> sl = 0x00000010;
> break;
> case "fr-ca": // stfTargetLanguageFrenchCanadian = 0x00000011,
> sl = 0x00000011;
> break;
> case "de", "de-de": // stfTargetLanguageGerman = 0x00000012,
> sl = 0x00000012;
> break;
> case "el", "el-gr": // stfTargetLanguageGreek = 0x00000014,
> sl = 0x00000014;
> break;
> case "it", "it-it": // stfTargetLanguageItalian = 0x00000017,
> sl = 0x00000017;
> break;
> case "ja", "ja-jp": // stfTargetLanguageJapanese = 0x00000018,
> sl = 0x00000018;
> break;
> case "ko", "ko-kr": // stfTargetLanguageKorean = 0x00000019,
> sl = 0x00000019;
> break;
> case "pl", "pl-pl": // stfTargetLanguagePolish = 0x0000001F,
> sl = 0x0000001F;
> break;
> case "pt", "pt-pt": // stfTargetLanguagePortuguese =
0x00000020,
> sl = 0x00000020;
> break;
> case "pt-br": // stfTargetLanguagePortugueseBrazilian =
> 0x00000021,
> sl = 0x00000021;
> break;
> case "ru", "ru-ru": // stfTargetLanguageRussian = 0x00000023,
> sl = 0x00000023;
> break;
> case "es", "es-es", "es-em", "es-la": //
stfTargetLanguageSpanish
> = 0x00000027,
> sl = 0x00000027;
> break;
> case "tr", "tr-tr": // stfTargetLanguageTurkish = 0x00000029,
> sl = 0x00000029;
> break;
> /+
> case "", "":
> sl = 12;
> break;
> enum SourceLanguage {
> stfSourceLanguageCroatian = 0x00000007,
> stfSourceLanguageCzech = 0x00000008,
> stfSourceLanguageDanish = 0x00000009,
> stfSourceLanguageEstonian = 0x0000000D,
> stfSourceLanguageFaeroese = 0x0000000E,
> stfSourceLanguageFinnish = 0x0000000F,
> stfSourceLanguageGermanSwiss = 0x00000013,
> stfSourceLanguageHungarian = 0x00000015,
> stfSourceLanguageIcelandic = 0x00000016,
> stfSourceLanguageLatvian = 0x0000001A,
> stfSourceLanguageLithuanian = 0x0000001B,
> stfSourceLanguageNone = 0x0000001C,
> stfSourceLanguageNorwegian = 0x0000001D,
> stfSourceLanguageNorwegianNynorsk = 0x0000001E,
> stfSourceLanguagePolish = 0x0000001F,
> stfSourceLanguagePortuguese = 0x00000020,
> stfSourceLanguagePortugueseBrazilian = 0x00000021,
> stfSourceLanguageRomanian = 0x00000022,
> stfSourceLanguageRussian = 0x00000023,
> stfSourceLanguageSerbian = 0x00000024,
> stfSourceLanguageSlovak = 0x00000025,
> stfSourceLanguageSlovenian = 0x00000026,
> stfSourceLanguageSpanish = 0x00000027,
> stfSourceLanguageSwedish = 0x00000028,
> stfSourceLanguageTurkish = 0x00000029,
> stfSourceLanguageUkrainian = 0x0000002A,
> stfSourceLanguageJapaneseWinAlign = 0x0000002B,
> stfSourceLanguageDutchNew = 0x0000002C,
> stfSourceLanguageGermanNew = 0x0000002D,
> stfSourceLanguageGermanSwissNew = 0x0000002E,
> }
> +/
> default:
> sl = 0x0000000C;
> // stfSourceLanguageEnglishUs = 0x0000000C,
> break;
> }
> //return cast(dchar)sl;
> return sl;
> }
> Can someone that knows about the inside of D1 tells me if I am
wrong
> or not? Thanks again.
I guess there are no takers. :-) Ok, I will pose some questions:
1. what type of value is this: 0x00000001? (I thought it was a dchar
type, but returning that value as dchar does not work)
2. How can I create a function that would return values such as
these? (0x00000000, 0x0000000A, 0x00000000,..., etc.)
thanks for your help.
jic
More information about the Digitalmars-d-learn
mailing list