That didn't do the job. Ending up doing the following.
In Delphi:
function AddUser(PUserName, PFullName, PGroupName: PChar; PActive: Boolean;
const PPathOut: PChar): Integer;
...
// Take a copy of the path
StrPCopy(PPathOut, LPath);
Result := StrLen(PPathOut);
...
In VB:
Declare Function AddUser Lib "cjnhosting.dll" _
(ByVal PUserName As String, ByVal PFullName As String, _
ByVal PGroupName As String, ByVal PActive As Integer, ByVal PPathOuit As
String) As Integer
...
Stacey
> -----Original Message-----
> From: Carl Reynolds [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, 20 February 2001 5:18 p.m.
> To: Multiple recipients of list delphi
> Subject: RE: [DUG]: Using a Delphi DLL in VB/VBA
>
>
> Stacey, what size is a VB integer? You probably need to make
> sure that your
> "as integer" accesses the same number of bytes as a delphi boolean,
> otherwise it may "spill over the edges" (into the function
> result?). Try
> defining PActive as a LongBool instead of a Boolean, and see
> if the problem
> still occurs.
>
> Cheers,
> Carl
>
> -----Original Message-----
> From: Stacey Verner [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, 20 February 2001 1:04 PM
> To: Multiple recipients of list delphi
> Subject: [DUG]: Using a Delphi DLL in VB/VBA
>
>
> I have a DLL developed by us in Delphi which our clients are
> using from VB
> and VBA, and we have problems with a function that has a
> string result.
>
> The Delphi definition is
>
> function AddUser(PUserName, PFullName, PGroupName: PChar;
> PActive: Boolean):
> PChar; stdcall;
>
> which we can access (in the dll) with no problems using
>
> ...
> TAddUser = function(PUserName, PFullName, PGroupName: PChar; PActive:
> Boolean): PChar; stdcall;
> ...
> var
> AddUser: TAddUser;
> ...
> @AddUser := GetProcAddress(CJNHostingDLLHandle, 'AddUser');
>
> I havn't tried static loading but there should be no difference.
>
> In VB they use
>
> Declare Function AddUser Lib "cjnhosting.dll" _
> (ByVal PUserName As String, ByVal PFullName As String, _
> ByVal PGroupName As String, ByVal PActive As Integer) As String
>
> and this crashes (the application just closes with no error
> messages), but
> only when the result is used.
>
> ie. Call AddUser(...) is fine.
> LString = AddUser(...) crashes.
>
> We are using PActive As an integer because VB and Delphi
> boolean types are
> different. In VB true is -1.
>
> Any suggestions on how to get this to work?
>
> Thanks
>
> Stacey
>
> Stacey Verner Ph: +64-9-4154790
> Software Developer Fax: +64-9-4154791
> DDI: +64-9-4154797
> CJN Technologies Ltd. Email: [EMAIL PROTECTED]
> PO Box 302-278, North Harbour, Auckland, New Zealand
> 12 Piermark Drive, North Harbour Estate, Auckland, NZ
> Visit our website at http://www.cjntech.co.nz/
>
> --------------------------------------------------------------
> -------------
> New Zealand Delphi Users group - Delphi List -
> [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
>
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"