1

In PHP, I want to pass an array of bytes reference to a COM object method whose syntax in VB is:

object.VBObjectMethod(ByRef aRawData() As Byte)

where parameter aRawData is an array of bytes that specifies a data object.

In PHP I am initialising the COM class and calling VBObjectMethod as follows:

$theObject = new COM("VBObject.Class") or die ("Could not initialise VBObjectClass");

Up to this bit things are OK but I have no idea how to do the following correctly:

$theObject->VBObjectMethod("How do I pass a reference to a byte array here?");

I have a $byteArray I am passing to VBObjectMethod in PHP as follows;

$theObject->VBObjectMethod($byteArray);

But, I get the following Fatal error message:

Fatal error: Uncaught exception 'com_exception' with message 'Source: VBObject.Class
Description: Bad variable type.' in C:\xampp\htdocs\waterCompany\reservoir.php:3 Stack trace #0 C:\xampp\htdocs\waterCompany\reservoir.php(3): com->VBObjectMethod(Array)#1 {main} thrown in C:\xampp\htdocs\waterCompany\reservoir.php on line 3C:\xampp\htdocs\waterCompany\reservoir.php on line 3

4
  • 1
    maybe interesting? Pass a PHP Variant object? VARIANT class Also, stackoverflow.com/questions/35596490/…? Commented Feb 12, 2017 at 15:23
  • 1
    A PHP array is not the same as a VB array. Please show how arawData() is defined in VB. Commented Feb 12, 2017 at 15:38
  • @Parfait aRawData is an array of bytes that specifies a data object. It is the parameter that is passed in VBObjectMethod. That is how data should be passed in that method in VB. I am trying to pass byte array data to VBObjectMethod in Php. In VB I did so with a lot if ease but in Php I am stuck. Commented Feb 13, 2017 at 6:18
  • @Ryan Vincent that question link you shared and this other one here stackoverflow.com/questions/3686624/… seem to edge me closer but I am still yet to figure out how to do it. I have tried the following without success $theObject->VBObjectMethod(new VARIANT($byteArray, VT_ARRAY)); $theObject->VBObjectMethod(new VARIANT($byteArray, VT_UI1)); $theObject->VBObjectMethod(new VARIANT($byteArray, VT_ARRAY | VT_UI1)); Commented Feb 13, 2017 at 6:29

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.