GetField returns different value from GetRecordAsPropList
    Pierre Rossel 
    prossel2 at myrealbox.com
       
    Fri Jun 23 09:55:36 CDT 2006
    
    
  
Hello Ruslan,
>             if( isNull )
>             {
>                 pMmValue->ValueRelease( &fldValue );
>             }
> 
> If field value is Null, then we simply make empty fldValue.
> I.e. We DO NOT put string <Null> there.
> I think this is Director issue.
I am not a XDK specialist, but I downloaded it and read a bit through the
doc. I also looked in PRegEx xtra source code to try to find the way to set
a value to void.
Are you sure that a simple ValueRelease() call will set the value to void in
property list ? I guess the ValueRelease will only decrement the reference
counter.
But the point is: if there is no chance to have a 1.11 update, even if there
is a bug, is it worth looking for a solution in the source code ?
> The correct code to extract value from this field is:
>     
>    curItem = MyQuery(
>         "SELECT * FROM MediaItem WHERE RecID=" & p_iMediaItemId)
> 
>     isNull = curItem.GetFieldIsNull("mediaData")
>  
>     if( not isNull )
>        value = curItem.GetField("mediaData")
> 
> 
> You cannot just extract value. If you do this, you will get 
> ZERO for numeric
> fields, and empty string for STRING/VARCHAR/TEXT.
Why not a real void value if the field is NULL ?
One that will make voidP(value) return true.
> ** Function GetRecordAsPropList() do this code self. It check 
> if field us
> null, and put values into list...Why Director show you <Null> 
> I don't know.
Maybe because the way the value is set when the field is NULL is not the
best way to set a void value.
> May be this is normal for VOID varaibale ?
No. There are lots of use of void values in Director and I have never seen
the <NULL> value before. Note this is not a string.
> Have you try e.g. 
> 
>     var = void
> 
>     put var 
Yes. The result is:
-- <Void>
It is not a string, which would be enclosed in quotes, but the way Director
shows a variable that has no value. It is different from the value 0,
although it is considered as a 0 in operations such as:
Put void = 0
-- 1
This is the reason of the voidP() function which will tell whether a value
is void or not.
Put voidP(0)
-- 0
Put voidP(void)
-- 1
Pierre Rossel
    
    
More information about the Valentina
mailing list