Bug #41388 [Asn->Opn]: Error in COM Object results

From: Date: Fri, 13 Dec 2013 07:50:14 +0000
Subject: Bug #41388 [Asn->Opn]: Error in COM Object results
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-183304@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=41388&edit=1

 ID:                 41388
 Updated by:         wez@php.net
 Reported by:        superfelo at yahoo dot com
 Summary:            Error in COM Object results
-Status:             Assigned
+Status:             Open
 Type:               Bug
 Package:            COM related
 Operating System:   Windows XP and 2003
 PHP Version:        5.2.2
-Assigned To:        wez
+Assigned To:        
 Block user comment: N
 Private report:     N



Previous Comments:
------------------------------------------------------------------------
[2008-11-18 16:33:48] xxx at xxx dot cc

¿Se arreglará alguna vez?
¿Hay alguien trabajando en el problema?

Will fix any time?
Is anyone working on the problem?

------------------------------------------------------------------------
[2007-12-19 13:26:19] superfelo at yahoo dot com

Is there any progress?
Is working on the problem?

------------------------------------------------------------------------
[2007-08-15 08:33:02] jani@php.net

Assigned to the maintainer.

------------------------------------------------------------------------
[2007-05-14 15:29:36] superfelo at yahoo dot com

Description:
------------
As it is possible to see bellow, a COM Object is opened, then Data Base is read by a Recordset and a
OLE object is loaded in such Recordset.

Later, using a GetChunk which is a Recordset function a number of bytes in OLE object is read but
this function just result in the number of printable characters and it discards or ignore for
instance, byte 0 or any other not printable character.

In the second example, it is possible to see a function to read 20 bytes after a certain position.
Now the problem is similar. The 20 bytes has been counted by the results are just printable
characters of such 20 bytes. So, result is less than 20 character because not all 20 characters are
printable. 

Reproduce code:
---------------
$engine = new COM("DAO.DBEngine.35");
$engine->SystemDB = "c:\system.mda";
$engine->defaultuser = "admin";
$engine->defaultpassword = "";
$db = $engine->OpenDataBase("c:\bd.mdb");

$sqlstr = "SELECT DISTINCTROW tabla1.* FROM tabla1;" ;
$rst = $db->OpenRecordset("RsConfig",$sqlstr);
echo $rst->Fields["Campo1"]->GetChunk(1,20);
//-------------------------------------------------
$mstream =  new COM("ADODB.Stream");
$mstream->Type = 1; // 'adTypeBinary
$mstream->Open;
$mstream->Write($rst->Fields["Campo1"]->Value);
$mstream->position = 0;
echo $mstream->Read(20);


Expected result:
----------------
The actual number of bytes in a OLE object stored in a Recordset: This number of bytes of course,
must include printable and not printable characters.

Actual result:
--------------
Just the number of printable characters.


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=41388&edit=1


Thread (6 messages)

« previous php.bugs (#183304) next »