Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / ASP.NET / General / July 2007

Tip: Looking for answers? Try searching our database.

HRESULT return value in Javascript without exception

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Rob - 30 Jul 2007 15:10 GMT
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.
Eliyahu Goldin - 30 Jul 2007 15:20 GMT
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();

Signature

Eliyahu Goldin,
Software Developer
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin
http://usableasp.net

> Hi,
> If I call my own DLL from Javascript, a HRESULT is returned.
[quoted text clipped - 30 lines]
> Greetings,
> Rob.
Rob - 30 Jul 2007 15:54 GMT
Yes.....
As I mentioned, the function is called OK, So I left this part out.

Greetings,
Rob

> How does javascript know your function?
>
[quoted text clipped - 37 lines]
> > Greetings,
> > Rob.
bruce barker - 30 Jul 2007 16:43 GMT
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)

> Hi,
> If I call my own DLL from Javascript, a HRESULT is returned.
[quoted text clipped - 28 lines]
> Greetings,
> Rob.
Rob - 30 Jul 2007 17:10 GMT
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.

> 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
[quoted text clipped - 34 lines]
> > Greetings,
> > Rob.
Eliyahu Goldin - 30 Jul 2007 23:12 GMT
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;
}

Signature

Eliyahu Goldin,
Software Developer & Consultant
Microsoft MVP [ASP.NET]
http://msmvps.com/blogs/egoldin

> Tried that, but the project (ATL activex) doesn't compile such a member.
> It says that all interface members must return HRESULT.
[quoted text clipped - 44 lines]
> > > Greetings,
> > > Rob.
Rob - 31 Jul 2007 08:24 GMT
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.

> Try  describing your interface method in IDL like this:
>
[quoted text clipped - 62 lines]
> > > > Greetings,
> > > > Rob.

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.