By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,918 Members | 1,852 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,918 IT Pros & Developers. It's quick & easy.

HRESULT return value in Javascript without exception

P: n/a
Hi,
If I call my own DLL from Javascript, a HRESULT is returned.
Javascript cannot cast this to an integer.
Is there any other way of typecasting this returnvalue to integer, wihout
using the exception method which is described everywhere ?
Please note that I am unfamiliar with javascript, I am used to C/C++.

My Javascript call looks like :

var result;
result = Testfunc1();

The function is called OK, but the returnvalue cannot be converted.
It is printed as "undefined".
I just need 0 or 1 to be returned (or 2 other values, one for OK, and one
for ERROR)
So I tried the following :

result = (Testfunc1() & 255) ;

But this always returns 0 for some reason....

It seems unlogical and not neat, to throw exceptions when really nothing
serious happenned, just to convert the returnvalue. Also the clientcode will
be poluted with a lot of extra (rather poorly structured) lines.
So If I could just get the low-byte of the HRESULT, this would be enough for
me.

Please Help !

Greetings,
Rob.







Jul 30 '07 #1
Share this Question
Share on Google+
6 Replies


P: n/a
How does javascript know your function?

Do you mean you call it on an object reference like

myObj = ActiveXObject ("Prog ID of COM DLL");
result = myObj.Testfunc1();
--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net
"Rob" <Ro*@discussions.microsoft.comwrote in message
news:36**********************************@microsof t.com...
Hi,
If I call my own DLL from Javascript, a HRESULT is returned.
Javascript cannot cast this to an integer.
Is there any other way of typecasting this returnvalue to integer, wihout
using the exception method which is described everywhere ?
Please note that I am unfamiliar with javascript, I am used to C/C++.

My Javascript call looks like :

var result;
result = Testfunc1();

The function is called OK, but the returnvalue cannot be converted.
It is printed as "undefined".
I just need 0 or 1 to be returned (or 2 other values, one for OK, and one
for ERROR)
So I tried the following :

result = (Testfunc1() & 255) ;

But this always returns 0 for some reason....

It seems unlogical and not neat, to throw exceptions when really nothing
serious happenned, just to convert the returnvalue. Also the clientcode
will
be poluted with a lot of extra (rather poorly structured) lines.
So If I could just get the low-byte of the HRESULT, this would be enough
for
me.

Please Help !

Greetings,
Rob.







Jul 30 '07 #2

P: n/a
Yes.....
As I mentioned, the function is called OK, So I left this part out.

Greetings,
Rob

"Eliyahu Goldin" wrote:
How does javascript know your function?

Do you mean you call it on an object reference like

myObj = ActiveXObject ("Prog ID of COM DLL");
result = myObj.Testfunc1();
--
Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net
"Rob" <Ro*@discussions.microsoft.comwrote in message
news:36**********************************@microsof t.com...
Hi,
If I call my own DLL from Javascript, a HRESULT is returned.
Javascript cannot cast this to an integer.
Is there any other way of typecasting this returnvalue to integer, wihout
using the exception method which is described everywhere ?
Please note that I am unfamiliar with javascript, I am used to C/C++.

My Javascript call looks like :

var result;
result = Testfunc1();

The function is called OK, but the returnvalue cannot be converted.
It is printed as "undefined".
I just need 0 or 1 to be returned (or 2 other values, one for OK, and one
for ERROR)
So I tried the following :

result = (Testfunc1() & 255) ;

But this always returns 0 for some reason....

It seems unlogical and not neat, to throw exceptions when really nothing
serious happenned, just to convert the returnvalue. Also the clientcode
will
be poluted with a lot of extra (rather poorly structured) lines.
So If I could just get the low-byte of the HRESULT, this would be enough
for
me.

Please Help !

Greetings,
Rob.









Jul 30 '07 #3

P: n/a
HResult is meant to return errors, and is not the return value of a
interface. change the com interface to return an int value, then
javascript can access it.

-- bruce (sqlwork.com)

Rob wrote:
Hi,
If I call my own DLL from Javascript, a HRESULT is returned.
Javascript cannot cast this to an integer.
Is there any other way of typecasting this returnvalue to integer, wihout
using the exception method which is described everywhere ?
Please note that I am unfamiliar with javascript, I am used to C/C++.

My Javascript call looks like :

var result;
result = Testfunc1();

The function is called OK, but the returnvalue cannot be converted.
It is printed as "undefined".
I just need 0 or 1 to be returned (or 2 other values, one for OK, and one
for ERROR)
So I tried the following :

result = (Testfunc1() & 255) ;

But this always returns 0 for some reason....

It seems unlogical and not neat, to throw exceptions when really nothing
serious happenned, just to convert the returnvalue. Also the clientcode will
be poluted with a lot of extra (rather poorly structured) lines.
So If I could just get the low-byte of the HRESULT, this would be enough for
me.

Please Help !

Greetings,
Rob.






Jul 30 '07 #4

P: n/a
Tried that, but the project (ATL activex) doesn't compile such a member.
It says that all interface members must return HRESULT.

Error, returnvalue, whatever.... ( is S_OK an error? )
What matters to me is that Javascript seems unable to typecast the 4 byte
piece of memory (HRESULT==LONG in C++) that is returned to something usefull.

Greetings,
Rob.
"bruce barker" wrote:
HResult is meant to return errors, and is not the return value of a
interface. change the com interface to return an int value, then
javascript can access it.

-- bruce (sqlwork.com)

Rob wrote:
Hi,
If I call my own DLL from Javascript, a HRESULT is returned.
Javascript cannot cast this to an integer.
Is there any other way of typecasting this returnvalue to integer, wihout
using the exception method which is described everywhere ?
Please note that I am unfamiliar with javascript, I am used to C/C++.

My Javascript call looks like :

var result;
result = Testfunc1();

The function is called OK, but the returnvalue cannot be converted.
It is printed as "undefined".
I just need 0 or 1 to be returned (or 2 other values, one for OK, and one
for ERROR)
So I tried the following :

result = (Testfunc1() & 255) ;

But this always returns 0 for some reason....

It seems unlogical and not neat, to throw exceptions when really nothing
serious happenned, just to convert the returnvalue. Also the clientcode will
be poluted with a lot of extra (rather poorly structured) lines.
So If I could just get the low-byte of the HRESULT, this would be enough for
me.

Please Help !

Greetings,
Rob.







Jul 30 '07 #5

P: n/a
Try describing your interface method in IDL like this:

HRESULT Testfunc1([out, retval] long *pResult);

and in C++ :

STDMETHODIMP Cwork::Testfunc1(long *pResult)
{
*pResult = 111;
return S_OK;
}
--
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
"Rob" <Ro*@discussions.microsoft.comwrote in message
news:5F**********************************@microsof t.com...
Tried that, but the project (ATL activex) doesn't compile such a member.
It says that all interface members must return HRESULT.

Error, returnvalue, whatever.... ( is S_OK an error? )
What matters to me is that Javascript seems unable to typecast the 4 byte
piece of memory (HRESULT==LONG in C++) that is returned to something
usefull.
>
Greetings,
Rob.
"bruce barker" wrote:
HResult is meant to return errors, and is not the return value of a
interface. change the com interface to return an int value, then
javascript can access it.

-- bruce (sqlwork.com)

Rob wrote:
Hi,
If I call my own DLL from Javascript, a HRESULT is returned.
Javascript cannot cast this to an integer.
Is there any other way of typecasting this returnvalue to integer,
wihout
using the exception method which is described everywhere ?
Please note that I am unfamiliar with javascript, I am used to C/C++.
>
My Javascript call looks like :
>
var result;
result = Testfunc1();
>
The function is called OK, but the returnvalue cannot be converted.
It is printed as "undefined".
I just need 0 or 1 to be returned (or 2 other values, one for OK, and
one
for ERROR)
So I tried the following :
>
result = (Testfunc1() & 255) ;
>
But this always returns 0 for some reason....
>
It seems unlogical and not neat, to throw exceptions when really
nothing
serious happenned, just to convert the returnvalue. Also the
clientcode will
be poluted with a lot of extra (rather poorly structured) lines.
So If I could just get the low-byte of the HRESULT, this would be
enough for
me.
>
Please Help !
>
Greetings,
Rob.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

Jul 30 '07 #6

P: n/a
Hi,
Thanks for the response.
I tried that too, but I cannot seem to pass a pointer from javascript.

From what I read on Inet, Javascript can pass "references" if you pass a
non-basic type to a function (like an object). So If I have "int a" , I
should pass "a.value", which should be passed as a "reference" (whatever that
is in Javascript).
For an int * my c++ function does not receive a correct pointer.
So if anyone knows how to do this, please let me know.

Greetings,
Rob.



"Eliyahu Goldin" wrote:
Try describing your interface method in IDL like this:

HRESULT Testfunc1([out, retval] long *pResult);

and in C++ :

STDMETHODIMP Cwork::Testfunc1(long *pResult)
{
*pResult = 111;
return S_OK;
}
--
Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
"Rob" <Ro*@discussions.microsoft.comwrote in message
news:5F**********************************@microsof t.com...
Tried that, but the project (ATL activex) doesn't compile such a member.
It says that all interface members must return HRESULT.

Error, returnvalue, whatever.... ( is S_OK an error? )
What matters to me is that Javascript seems unable to typecast the 4 byte
piece of memory (HRESULT==LONG in C++) that is returned to something
usefull.

Greetings,
Rob.
"bruce barker" wrote:
HResult is meant to return errors, and is not the return value of a
interface. change the com interface to return an int value, then
javascript can access it.
>
-- bruce (sqlwork.com)
>
Rob wrote:
Hi,
If I call my own DLL from Javascript, a HRESULT is returned.
Javascript cannot cast this to an integer.
Is there any other way of typecasting this returnvalue to integer,
wihout
using the exception method which is described everywhere ?
Please note that I am unfamiliar with javascript, I am used to C/C++.

My Javascript call looks like :

var result;
result = Testfunc1();

The function is called OK, but the returnvalue cannot be converted.
It is printed as "undefined".
I just need 0 or 1 to be returned (or 2 other values, one for OK, and
one
for ERROR)
So I tried the following :

result = (Testfunc1() & 255) ;

But this always returns 0 for some reason....

It seems unlogical and not neat, to throw exceptions when really
nothing
serious happenned, just to convert the returnvalue. Also the
clientcode will
be poluted with a lot of extra (rather poorly structured) lines.
So If I could just get the low-byte of the HRESULT, this would be
enough for
me.

Please Help !

Greetings,
Rob.





















>


Jul 31 '07 #7

This discussion thread is closed

Replies have been disabled for this discussion.