2016-09-24 180 views
-1

用户通过InputBox将字符串值输入到字符串数组中,一旦存储值,我如何使所有字母仅成为大写字母,如下面的示例。这些值必须基本上覆盖数组中的非大写值,以便稍后可以在列表框中显示它们。我知道我需要使用UpperCase函数,但似乎无法使它正常工作,因为它再次显示为非大写。如何使数组值全部为大写字母lazarus

这是我第一次尝试使用数组和UpperCase函数,所以请很好。

例如: '曲棍球', '网球', '足球' 为 '曲棍球', '网球', '足球'

大写代码:

procedure TFrm2016Assignment9.BtnCapitalStrClick(Sender: TObject); 
    var 
     Capitalise : string; 
begin 
Capitalise := UpperCase(nBasicsStrArray[0]); 
end; 

显示代码:

procedure TFrm2016Assignment9.BtnDisplayStrClick(Sender: TObject); 
begin 
    dDateTime := Date() + Time(); 
    LstOutput.Items.Add('String Array : ' + DateTimeToStr(dDateTime)); 
    LstOutput.Items.Add(nBasicsStrArray[0]); 
    LstOutput.Items.Add(nBasicsStrArray[1]); 
    LstOutput.Items.Add(nBasicsStrArray[2]); 
    LstOutput.Items.Add(nBasicsStrArray[3]); 
    LstOutput.Items.Add(nBasicsStrArray[4]); 
    LstOutput.Items.Add('****'); 
end; 

回答

-1

什么数据类型是nBasicsStrArray?

只需使用大写对整个字符串:

whatever := UpperCase(someEdit.text); 
+0

该数组的数据类型也是String。 – HarryJoe

1

UpperCase是返回与由大写字母一个新值的函数。它不修改它的论点。您将此新值分配给本地变量并立即将其忘记。

删除无效的BtnCapitalStrClick方法。当您添加字符串并将其转换为大写:

LstOutput.Items.Add(UpperCase(nBasicsStrArray[0])); 
+0

我决定采取这种方法,但根据我的任务,我必须保留BtnCapitalStrClick方法,所以我做了什么是我使这种方法不仅大写数组项目,而且还显示它们在同一时间。所以LstOutput.Items.Add(UpperCase(nBasicsStrArray [iCount])); - 在for循环内 – HarryJoe

+0

这将工作... –

0

由于这是拉撒路的话题,应该注意的是大写的解决方案是只为前128个ASCII字符正确。 Lazarus默认使用UTF8编码,因此函数UTF8Uppercase(在单元LazUTF8中)是更为通用的解决方案,因为它考虑了所有字符。

+0

这应该是一个真正的评论,因为它不回答这个问题。 –

+0

我相信他们现在已经做得更通用了。一般情况下,通常使用这些函数,当然,用一些外来字符来测试代码。 – juus

+0

不,刚刚检查了Laz-trunk和fpc-trunk(虽然有点过时):仍然需要UTF8Uppercase。 –

相关问题