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.