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

Rizwan
  • 103
  • 4
  • 24
Joseph
  • 789
  • 1
  • 9
  • 23
  • 1
    maybe interesting? Pass a PHP `Variant` object? [VARIANT class](http://php.net/manual/en/class.variant.php) Also, http://stackoverflow.com/questions/35596490/pass-by-reference-to-com-object-in-php? – Ryan Vincent Feb 12 '17 at 15:23
  • 1
    A PHP array is not the same as a VB array. Please show how `arawData()` is defined in VB. – Parfait Feb 12 '17 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. – Joseph Feb 13 '17 at 06:18
  • @Ryan Vincent that question link you shared and this other one here http://stackoverflow.com/questions/3686624/building-a-byte-array-in-php-with-variants 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)); – Joseph Feb 13 '17 at 06:29

0 Answers0