2016-09-24 4 views
-1

사용자가 InputBox를 통해 문자열 배열에 문자열 값을 입력합니다. 일단 값이 저장되면 아래 예제처럼 모든 문자를 대문자로 만듭니 까? 이러한 값은 기본적으로 배열 내의 대문자가 아닌 값을 덮어 써야 나중에 목록 상자에 표시 할 수 있습니다. 나는 UpperCase 함수를 사용해야하지만 그것이 대문자가 아닌 것으로 다시 나타나면 제대로 작동하는 것처럼 보일 수 없다는 것을 알고있다.배열 값을 대문자로 만드는 법

이것은 배열과 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 인코딩을 사용하므로 모든 문자를 고려하기 때문에 fhe 함수 UTF8Uppercase (단위 LazUTF8)가 좀 더 일반적인 솔루션입니다.

+0

이것은 질문에 대답하지 않기 때문에 정말로 주석이어야합니다. –

+0

나는 그들이 더 일반적인 것을 만들었다 고 생각한다. 일반적으로 함수를 정상적으로 사용하고 확실히 일부 외국 문자로 코드를 테스트하십시오. – juus

+0

아니요, Laz-trunk와 fpc-trunk (조금 오래된 것 같습니다)로 확인했습니다 : UTF8Uppercase가 여전히 필요합니다. –