[DUG] Returning a WideString in an Invoke Param
Rohit Gupta
rohit at cfl.co.nz
Tue Jul 18 11:27:35 NZST 2006
Is this code in a DLL ? If so then you can not transfer ansistrings unless you
use a sharememory kludge.
Last time I chose to use shortstrings to get around this. That worked fine
except in some instances on some PCs, the exceptions would not work...
When I thought about it, the exception object itself uses ansistring. So
Borlands staement is not true.... if the DLL can possible raise an exception,
it uses ansistring and you need to use sharemem.
Date sent: Tue, 18 Jul 2006 11:13:50 +1200
From: Phil Middlemiss <phil at tumonz.co.nz>
Organization: MTS Ltd
To: NZ Borland Developers Group - Delphi List <delphi at ns3.123.co.nz>
Subject: [DUG] Returning a WideString in an Invoke Param
Send reply to: NZ Borland Developers Group - Delphi List <delphi at ns3.123.co.nz>
<mailto:delphi-request at ns3.123.co.nz?subject=unsubscribe>
<mailto:delphi-request at ns3.123.co.nz?subject=subscribe>
Hi all,
I have an automation object with events. One of the events has a couple
of VAR parameters which I'm not quite sure how to handle. Here is the
code that is NOT working:
procedure TT3SDKEvents.DoInvoke(Sender : TObject; DispID: Integer; const
IID: TGUID;
LocaleID: Integer; Flags: Word; var Params: TDispParams; VarResult,
ExcepInfo,
ArgErr: Pointer);
case DispID of
...
4: { OnIdentify }
if assigned(FOnIdentify) then
begin
//initialise the values
layermanagerid := WideCharToString(Params.rgvarg[1].bStrVal);
appname := WideCharToString(Params.rgvarg[0].bstrVal);
if assigned(FOnIdentify) then
FOnIdentify(layermanagerid, appname);
Params.rgvarg[1].bstrVal := PWideChar(layermanagerid);
Params.rgvarg[0].bstrVal := PWideChar(appname);
end;
end;
end;
The above code just ends up returning an empty string - I've checked to
make sure that the call to FOnIdentify is indeed returning values.
So the question is: how should I be returning a widestring in the
TDispParams?
Cheers,
Phil.
Regards
Rohit
======================================================================
CFL - Computer Fanatics Ltd. 21 Barry's Point Road, AKL, New Zealand
PH (649) 489-2280
FX (649) 489-2290
email rohit at cfl.co.nz or r.gupta at xtra.co.nz
======================================================================
More information about the Delphi
mailing list