|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2010-08-12 08:52 UTC] stinger25 at yandex dot ru
Description:
------------
I have small test ActiveX DLL writen in VB6.
It is code of DLL:
Option Explicit
Private str_Text() As String
Public Property Get Text(index As Integer) As String
ReDim str_Text(3)
str_Text(0) = "Test zero string"
str_Text(1) = "Test first string"
str_Text(2) = "Test second string"
If ((index < 0) Or (index >= 3)) Then
Text = ""
Else
Text = str_Text(index)
End If
End Property
Public Property Get Count() As Long
Count = 3
End Property
When I trying read array from Text property PHP page generate error, but in VB6
it's working correct.
Test script:
---------------
<?php
$obj = new COM('TestCOM.Class1') or die('COM init failed.');
$j = $obj->Count;
print $j."<br>";
for ($i=0; $i<$j; $i++)
{
$str = $obj->Text[$i];
print $str."<br>" ;
}
?>
Expected result:
----------------
3
Test zero string
Test first string
Test second string
Actual result:
--------------
3
Fatal error: Uncaught exception 'com_exception' with message 'Error [0x8002000f]
Параметр является обязательным. ' in
C:\Inetpub\_web_script_\SKU_Buffer\docsgenerator\xls.php:8 Stack trace: #0
C:\Inetpub\_web_script_\SKU_Buffer\docsgenerator\xls.php(8): unknown() #1 {main}
thrown in C:\Inetpub\_web_script_\SKU_Buffer\docsgenerator\xls.php on line 8
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 21:00:01 2025 UTC |
It's working if instead property write method. VB6 Code Public Function ReadText(index) As String Dim ret As String ReDim str_Text(3) str_Text(0) = "Test zero string" str_Text(1) = "Test first string" str_Text(2) = "Test second string" If ((index < 0) Or (index >= 3)) Then ret = "" Else ret = str_Text(index) End If ReadText = ret End Function and in PHP page <?php $obj = new COM('TestCOM.Class1') or die('COM init failed.'); $j = $obj->Count; print $j."<br>"; for ($i=0; $i<$j; $i++) { // $str = $obj->Text[$i]; $str = $obj->ReadText($i); print $str."<br>" ; } ?> Actual result: 3 Test zero string Test first string Test second string