Page 1 of 1

Print Using

Posted: Fri Oct 14, 2005 6:34 pm
by PB&J Lover
Let's face it, we need a print using that works. I tried the library versions and they don't work or operate the way a print using should.

We don't have to call it that and we are almost there with the FormatDate() comand. Just expand that. In fact, call it FormatText() and allow for the same sort of field substitutions. It wouldn't take much. :D

Code: Select all

Text$ = FormatText(" Total: $#,###.##",StrF(Total.f))
Something like this with other template options. :wink:

Posted: Fri Oct 14, 2005 6:57 pm
by Paul
Hi PB&J Lover,

You say in your tagline you also use PureVision...
Have you looked at the PVGadgets_FormatNumber() command?
It might help you out a little.

Posted: Fri Oct 14, 2005 7:33 pm
by PB&J Lover
Paul, yes I do use it. Like it a lot. The documentation is not as complete as it should be though--I missed that one. :wink:

Posted: Sat Oct 15, 2005 1:16 am
by PB
> You say in your tagline you also use PureVision...
> Have you looked at the PVGadgets_FormatNumber() command?

Perhaps, but for those of us without PureVision it's a valid request. ;)

Posted: Mon Oct 17, 2005 9:56 am
by blueznl
dunno if this is of any use...

Code: Select all

Procedure.s x_strex(var.l,format.s)                                 ; convert int to string using a format field, format characters space and -+#.#
  Protected s.s, fl.l, sl.l, *f.BYTE, *s.BYTE, p.l, sb.l
  ;
  ; *** format integer to string
  ;
  ; in:  var.l    - int varar
  ;      f.s    - format
  ; out: .s    - string
  ;
  ; convert int varar to string using a pattern
  ;
  ; pattern elements:
  ;
  ; '#' - number or leading zero
  ; ' ' - space, number or (when there's no '+' or '-' used in the format) sign
  ; '+' - positive or negative indicator
  ; '.' - decimal sign
  ;
  ; examples:
  ;
  ; x_strex( 1234,     "###") =     "***"
  ; x_strex( 1234,   "##.##") =   "12.34"
  ; x_strex(-1234,   "##.##") =   "*****"
  ; x_strex(    1,  ".#####") =  ".00001"
  ; x_strex(   -1, "+   .##") = "-   .01"
  ;
  fl = Len(format)
  s = Str(var)
  sl = Len(s)
  ;
  *f.BYTE = @format+fl                               ; using two pointers and two counters
  *s.BYTE = @s+sl
  ;
  If PeekB(@format) = '+'                            ; remember is there is a sign in a fixed place
    p = 2
  ElseIf PeekB(@format) = '-'
    p = 1
  EndIf
  ;
  While fl > 0
    *f-1
    fl-1
    If *f\b = '.'                               ; skip a dot if we pass one
    Else
      sl-1
      If sl >= 0
        *s-1
        sb = *s\b                               ; sb contains the digit, AND is used as a flag
      EndIf
      Select *f\b
        Case '-'                                ; ah, a sign in a fixed place
          If sb = '-'
            sb = -1                             ; if sb = -1 we've managed to store the sign
          Else
            *f\b = ' '
          EndIf
        Case '+'                                ; same thing for the +
          If sb = '-'
            *f\b = sb
            sb = -1
          EndIf
        Case '#'                                ; if we have data that is not a sign we're gonna fill it in
          If sb = '-' Or sl < 0
            *f\b = '0'                          ; otherwise it's going to be a zero
          Else
            *f\b = *s\b
          EndIf
        Case ' '                                ; if there is no fixed spot for a sign we'll store the minus
          If sb = '-'                           ; immediately on the first space we encounter
            If p = 0
              *f\b = '-'
              sb = -1
            EndIf
          ElseIf sb <> -1 And sl >= 0           ; otherwise we'll just gonna fil it in
            *f\b = *s\b
          EndIf
      EndSelect
    EndIf
  Wend
  ;
  If sb = '-' Or sl > 0                         ; if the sign wasn't stored or there was some data left
    format = LSet("",Len(format),"*")           ; we'll put in some stars to indicate overflow
  EndIf
  ;
  ProcedureReturn format
EndProcedure

Posted: Mon Oct 17, 2005 3:22 pm
by Paul
PB wrote: Perhaps, but for those of us without PureVision it's a valid request. ;)

Obvious solution.... get PureVision !! :D

Posted: Mon Oct 17, 2005 3:29 pm
by Paul
PB&J Lover wrote:Paul, yes I do use it. Like it a lot. The documentation is not as complete as it should be though--I missed that one. :wink:
Unfortunately you actually have to read the documentation to see what commands are available. :)