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.
Code: Select all
Text$ = FormatText(" Total: $#,###.##",StrF(Total.f))
Something like this with other template options.

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.

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 !!

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.

Unfortunately you actually have to read the documentation to see what commands are available.
