2014-02-16 42 views
1

我遇到了一個非常簡單的問題,但無法在線找到答案。我想顯示一個沒有後續空格字符的字符串,所以使用TRIM。在實際的程序中,字符串的長度在運行時才知道,所以我無法設置特定的「格式」大小。進度4GL:關於TRIM功能

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

給我

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

所以沒有使用

trim(w-test, " "). 

毫無疑問,我傻,但沒有任何人有什麼想法?

謝謝你的時間。

+0

修剪從字符串中刪除字符。默認字符是「空格」。格式僅改變字符串的顯示方式。沒有其他的。 – Jensd

回答

1

一個字符串顯示的默認格式爲8個字符,所以你在這裏做什麼

display trim(w-test). 

是一樣的:

display trim(w-test) FORMAT "X(8)". 

爲了得到更多的字符串顯示,請指定更長的格式 - 如下所示:

display trim(w-test) FORMAT "X(15)". 
+0

您好Tim,感謝您的回覆,我在發佈後立即編輯了這個問題,在實際程序中注意到我不知道字符串的長度,直到運行時,所以無法設置任何固定的「格式」大小。有沒有其他的方法呢? – tom01

+0

這取決於輸出的去向。可以通過更改FRAME框架名稱字段名稱:FORMAT屬性或使用PUT UNFORMATTED STRING(w-test,ch-format)執行報告來更改DISPLAY語句的格式。 –

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只是爲了表明你可以將它設置爲任何你想要的...)