2016-09-24 12 views
-1

ユーザーは、値が格納されたら文字列配列に文字列値を入力します。以下の例のようにすべての文字を大文字にするにはどうすればいいですか?これらの値は、基本的に配列内の非大文字化された値を上書きして、あとでリストボックス内に表示できるようにする必要があります。私はUpperCase関数を使用する必要があることを知っていますが、再び大文字ではないように見えるので、正しく動作するようには見えません。配列の値をすべて大文字にする方法

これは私の初めての配列とUpperCase関数で実験していますので、よろしくお願いします。

例: 'ホッケー'、 'テニス'、 'フットボール' 'ホッケー'、 'テニス'、 'FOOTBALL'

大文字コードに :

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はまだ必要です。 –

関連する問題