Hello Grerard,

I'm not sure if I understood your problem but from my quick console session:

>> grouping: log-2 8
== 3.0
>> type? grouping
== decimal!
>> a: "123456789" copy/part a grouping
** Script Error: Invalid /part count: 3.0
** Near: copy/part a grouping
>> a: "123456789" copy/part a to-integer grouping
== "123"
>>


So basically copy doesn't like decimal numbers as a range argument(which is
logical to me in this case)

regards,

Cyphre






----- Original Message -----
From: "Gerard Cote" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, June 01, 2005 9:27 PM
Subject: [REBOL]


>
> Hello list,
>
> I need some help here since I can't work the copy/part correctly with
words instead of numbers.
>
> The problem I'm working on:
> -----------------------------
> While working on a mimicked rebol version of the awk or C "printf"
instruction somewhere I have to convert binary numbers in octal,
> decimal and hexadecimal. During this process I have to assemble binary
digits into chunks of 3 or 4. This is what the following code
> does - here for chunks of 3 since the code part for the hexa is done
separately for now.  The code also pads to the left with0 when
> Value length is not a multiple of  3.
>
> Example:  Value: "12345678"  -> first padded to "012345678" and sliced to
678 345 012
> Eventually the numbers will be 0 and 1 but for testing it is easier to use
decimal numbers to keep positions aligned.
>
> So the code below works well for a binary to octal assembly - at least for
some samples.
> The difficulty I have is the following  :
>
> the copy/part doesn't accept the fact that if replace the last parameter
(number 3) by its equivalent valued word "grouping" which
> is defined as number 3 (defined as grouping: 3).
>
> I've tried to compose the complete line and do it after but this never
worked for the entire script. However this worked well on
> smaller oneliner examples. I don't know why and can't explain this kind of
anomaly (from my beginnners eyes at least).
>
> Can someone help ? Thanks in advance
>
>
> value: "12345678"
>
> val-length: length? value
>      grouping: log-2 dest-base                        ; Since source-base
is 2 (defined elsewhere)
>      reste: val-length // grouping                      ; Length of
padding based on this value
>      if reste <> 0 [
>       insert/dup value "0" (grouping - reste)     ; Left padding done here
>       head value
>
>      ]
>      c: length? value
>      while [c >= grouping] [
>         slice: copy ""
>
>         slice: copy/part at value (c - grouping + 1)  3      ; <- This 3
is to be replaced with the word
>         print ["slice: " slice]
;       "grouping"
>         ; remove/part at value c - 3 3
>         c: c - grouping
>      ]
>
>
> --
> To unsubscribe from the list, just send an email to
> lists at rebol.com with unsubscribe as the subject.
>

-- 
To unsubscribe from the list, just send an email to 
lists at rebol.com with unsubscribe as the subject.

Reply via email to