Progress 4GL:关于TRIM功能

时间:2014-02-16 04:09:08

标签: progress-4gl

我遇到一个非常简单的问题,但无法在线找到答案。我想显示一个没有后续空格字符的字符串,所以使用TRIM。在实际程序中,字符串的长度直到运行时才知道,因此我无法设置特定的“格式”大小。

def var w-test as char init "abcdefghijklm                " format "x(30)".
display trim(w-test).

给了我

┌────────┐
│abcdefgh│
└────────┘

使用

也是如此
trim(w-test, " ").

毫无疑问我很傻,但有人有任何想法吗?

感谢您的时间。

2 个答案:

答案 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的目的只是为了表明你可以将它设置为你想要的任何东西......)