Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > HRESULT return value in Javascript without exception

Reply
Thread Tools

HRESULT return value in Javascript without exception

 
 
=?Utf-8?B?Um9i?=
Guest
Posts: n/a
 
      07-30-2007
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.





















 
Reply With Quote
 
 
 
 
Eliyahu Goldin
Guest
Posts: n/a
 
      07-30-2007
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" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>



 
Reply With Quote
 
 
 
 
=?Utf-8?B?Um9i?=
Guest
Posts: n/a
 
      07-30-2007
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" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > 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.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >

>
>
>

 
Reply With Quote
 
bruce barker
Guest
Posts: n/a
 
      07-30-2007
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.
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>

 
Reply With Quote
 
=?Utf-8?B?Um9i?=
Guest
Posts: n/a
 
      07-30-2007
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.
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >

>

 
Reply With Quote
 
Eliyahu Goldin
Guest
Posts: n/a
 
      07-30-2007
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" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> 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.
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >

> >



 
Reply With Quote
 
=?Utf-8?B?Um9i?=
Guest
Posts: n/a
 
      07-31-2007
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" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed)...
> > 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.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > >

>
>
>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Exception from HRESULT: 0x8007007E xanthviper@xanthviper.com ASP .Net 1 02-26-2008 03:47 AM
The system cannot find the file specified. (Exception from HRESULT: 0x80070002) chanmm ASP .Net 6 11-25-2005 08:26 AM
System.UnauthorizedAccessException: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)) Mitja Semolic ASP .Net 0 11-15-2005 01:58 PM
Event ID: 4609 -> The COM+ Event System detected a bad return code during its internal processing. HRESULT Ted Jones Computer Support 1 08-29-2005 06:41 PM
Exception from HRESULT: 0x800AC352 Stan Sainte-Rose ASP .Net 13 05-13-2004 04:17 AM



Advertisments