我遇到一个非常简单的问题,但无法在线找到答案。我想显示一个没有后续空格字符的字符串,所以使用TRIM。在实际程序中,字符串的长度直到运行时才知道,因此我无法设置特定的“格式”大小。
def var w-test as char init "abcdefghijklm " format "x(30)".
display trim(w-test).
给了我
┌────────┐
│abcdefgh│
└────────┘
使用
也是如此trim(w-test, " ").
毫无疑问我很傻,但有人有任何想法吗?
感谢您的时间。
答案 0 :(得分:1)
字符串DISPLAY的默认格式是8个字符,所以你在这里做什么
display trim(w-test).
与:
相同display trim(w-test) FORMAT "X(8)".
要获取更多要显示的字符串,请指定更长的格式 - 如下所示:
display trim(w-test) FORMAT "X(15)".
答案 1 :(得分:1)
为什么要知道修剪字符串的长度以设置格式?你为什么要修剪它?我怀疑你是混淆显示格式和字符串内容或存储。
例如,如果您的问题的根与部分构建字符串有关(这是使用TRIM()函数的一个原因)那么格式就无关紧要了。
显示格式就是显示格式。您正在屏幕上(或在报表中)分配空间以保留一些最大文本宽度。它不会影响存储,也不会影响存储。
当然,您已经知道要在屏幕上为这些数据预留多少空间?
如果结果是小于保留宽度通常不是问题。
如果数据比这更广泛,您可能还会想到该怎么做。很多时候,如果太宽,人们什么也不做 - 显示保留宽度,其余部分被截断。但是你可以在屏幕上放一个指示器,甚至可以让它滚动:
define variable xtext as character no-undo format "x(250)" view-as fill-in size 10 by 1.
xtext = "the quick brown fox jumped over the lazy dog.".
update xtext "...".
另一方面,您还可以创建一个完全动态的屏幕。这将要求您创建框架小部件和填充并使用它们的句柄,但它也允许您计算您想要的任何格式:
define variable fr as handle no-undo.
define variable fi as handle no-undo.
create frame fr.
assign
fr:width-chars = 50
fr:height-chars = 5
fr:title = "Dynamic Frame"
.
create fill-in fi.
assign
fi:row = 2
fi:column = 20
fi:width-chars = 10
fi:format = "x(3)"
fi:screen-value = "abc123"
fi:frame = fr
.
assign
fr:visible = yes
fr:hidden = no
.
pause.
(制作格式“x(3)”和宽度10的目的只是为了表明你可以将它设置为你想要的任何东西......)