Consultor Eletrônico



Kbase P186122: Cannot assign an array element directly from a buffer value.
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   18/04/2011
Status: Unverified

SYMPTOM(s):

Cannot assign an array element directly from a buffer value.

All array elements are assigned a value.

All array elements are assigned when only a single element should be assigned.

Array elements define in a class cannot be assigned directly from a buffer.

For example:

/* Ouch.cls */
USING Progress.Lang.*.

CLASS Ouch:
define public static property cValueArray as character no-undo extent 5 get. set.
END CLASS.

/* run-Ouch.p*/
DEFINE VARIABLE h_cust AS HANDLE.
FIND FIRST customer NO-LOCK.
h_cust = BUFFER Customer:handle.
Ouch:cValueArray = "100".
Ouch:cValueArray[1] = h_cust:BUFFER-FIELD("name"):buffer-value.

MESSAGE
Ouch:cValueArray[1] SKIP
Ouch:cValueArray[2] SKIP
Ouch:cValueArray[3] SKIP
Ouch:cValueArray[4] SKIP
Ouch:cValueArray[5] SKIP
VIEW-AS ALERT-BOX INFO BUTTONS OK.

Ouch:cValueArray = "200".
Ouch:cValueArray[1] = "customer Name field".

MESSAGE
Ouch:cValueArray[1] SKIP
Ouch:cValueArray[2] SKIP
Ouch:cValueArray[3] SKIP
Ouch:cValueArray[4] SKIP
Ouch:cValueArray[5] SKIP
VIEW-AS ALERT-BOX INFO BUTTONS OK.

FACT(s) (Environment):

The code only fails to work as expected when buffer values are assigned directly.
All Supported Operating Systems
OpenEdge 10.2x

CAUSE:

Bug# OE00206787

FIX:

None at this time. But as a work around assign the buffer value to a local variable first, then assign the array element from the local variable.

For example:


DEFINE VARIABLE c1 AS CHARACTER NO-UNDO.

c1 = h_cust:BUFFER-FIELD("name"):buffer-value.
Ouch:cValueArray[1] = c1.