2

私は現在、デスクトップアプリケーションに取り組んでいます。通貨を言葉に変換したい。これで、クリスタル レポートのフィールド オブジェクトが 2 つになりました。1 つは幅 4000 twip、もう 1 つは幅 5000 twip です。しかし今、私はこの言葉を 2 つの部分に分割して、最初の部分が最初のオブジェクト (400 twip) に収まり、2 番目に残るようにしたいと考えています。

元。貨幣を言葉に - 四千五百五十のみ

First Object 
----------------------------
|Four Thousand Five Hundred|
----------------------------

Second Object
----------------------------------------
|Fifty Only                             |
-----------------------------------------

前もって感謝します......

4

1 に答える 1

0

これを行う唯一の (ややハックな) 方法は、1. 固定幅フォントを使用し、2. オブジェクトに収まる文字数を計算することです。

したがって、あなたの例では、「Four Thousand Five Hundred」は 4000 twip フィールドの最後にあるため、26 文字がそのフィールドに収まることがわかります。その後、26 文字に収まる最初の単語を切り取ることができます。何かのようなもの:

local stringvar input := {table.yourString};
//local stringvar input := "Four Thousand Five Hundred Fifty";
local stringvar array inputSplit := split(input," ");
local numbervar charCount := 0;
local numbervar i;

//output strings
global firstString := "";
global secondString := "";

//for each word in the input...
for i := 1 to ubound(inputSplit) do
  (charCount := charCount + length(inputSplit[i]) + 1;
   if charCount <= 27 then firstString := firstString + " " + inputSplit[i]
     else secondString := secondString + " " + inputSplit[i]);

//remove leading whitespace
firstString := trim(firstString);
secondString := trim(secondString); 
于 2013-06-18T16:22:13.487 に答える