Copy, Length AnsiString UnicodeString 차이, IsCharAlphaA 알파벳 문자확인
델파이 2009 부터 String은 기본적으로 UnicodString 이다
var vAnsiS: AnsiString;
vUniS: String;
begin
Edit4.Text := '가나다123abc'; // 유니코드스트링
vAnsiS := copy(AnsiString(Edit4.Text), 1,5); // 안시로 변환하고 copy
vUniS := copy(Edit4.Text, 1,5); // 유니코드 copy
Memo2.Lines.Add('AnsiString Copy:' + vAnsiS + ' Length(바이트): ' + inttostr(Length(vAnsiS)));
--> (결과) AnsiString Copy:가나1 Length(바이트): 5
Memo2.Lines.Add('UniString Copy:' + vUniS + ' Length(문자수): ' + inttostr(Length(vUniS)));
--> (결과) UniString Copy:가나123 Length(문자수): 5
즉 AnsiString에서는 copy는 바이트단위로 자르고 Length는 바이트수를 반환하고
UnicodeString에서는 copy는 글자수단위로 자르고 Length는 문자수를 반환한다.
-----------------------------------------------------------------------------------------------------
델파이 시애틀에서 문자가 알파벳인지 확인하는 함수 IsCharAlphaA 즉 안시(AnsiString)로 바꿔야 정상작동한다.
유니코드용 IsCharAlpha 함수가 있지만 한글을 알파벳으로 인식하는 오류가 있다.
if IsCharAlphaA(AnsiString(Edit1.Text)[1]) then
showmessage('알파벳')
else
showmessage('Not 알파벳');
------------------------------------------------------------------------------------------------
Edit2.text := inttostr(Length(WideString(Edit1.Text))); //문자수리턴
Edit2.text := inttostr(Length(Edit1.Text)); //바이트수리턴 AnsiString일때