다양한 길이의 문자열을 탐색하고 나에 의해 정의 된 세트의 기호 (특히 일본어 문자)를 사용하여 작성된 프로그램 만 선택하는 프로그램을 작성해야합니다. 문자열에는 다른 언어 (독일어, 프랑스어, 아랍어, 러시아어, 영어 등)로 작성된 단어가 포함됩니다. 분명히 가능한 문자가 엄청나게 많습니다. 어떤 구조를 사용해야할지 모르겠다. 지금 델파이 7을 사용하고 있습니다. 아무도 그러한 프로그램을 작성하는 방법을 제안 할 수 있습니까?Delphi 7에서 유니 코드 문자열로 작업하기
답변
델파이 7의 VCL은 유니 코드 문자열을 인식하지 못하기 때문에 분명히 Delphi 2010을 사용하는 것이 좋습니다. Delphi 7에서는 WideString 유형과 WideChar 유형을 사용할 수 있으며 결과를 표시 할 수있는 사용자 인터페이스를 만들 때 TNT 유니 코드 구성 요소와 같은 구성 요소 세트를 설치할 수 있습니다.
매우 큰 세트 유형의 경우 TBits와 같은 비트 배열 사용을 고려하십시오. 길이가 65536 인 비트 배열은 모든 UTF-16 코드 포인트를 포함 할만큼 충분합니다. Char X가 Set Y에 있는지 확인하는 것은 기본적으로 다음과 같습니다.
function WideCharsInSet(wcstr:WideString; wcset:TBits):Boolean;
var
n:Integer;
wc:WideChar;
begin
result := false;
for n := 1 to Length(wcstr) do begin
wc := wcstr[n];
if wcset[Ord(wc)] then
result := true;
end;
end;
procedure Demo;
var
wcset1:TBits;
s:WideString;
begin
wcset1 := TBits.Create;
try
// 1157 - Hangul Korean codepoint I found with Char Map
wcset1[1157] := true;
// go get a string value s:
s := WideChar(1157);
// return true if at least one element in set wcset is found in string s:
if WideCharsInSet(s,wcset1) then begin
Application.MessageBox('Found it','found it',MB_OK);
end;
finally
wcset1.Free;
end;
end;
또한 Delphi 2010으로 전환하는 것이 좋습니다 (왜 더 이상 2009 년을 귀찮게합니까?).
드물기는하지만 Mike Lischke의 Unicode Library이 다소 도움이 될 수 있습니다.
링크가 깨졌습니다. – CyprUS
@CyprUS, fixed! –
설명하는 방식으로 문자열을 간단하게 처리하려면 최신 컴파일러 및 유니 코드 사용 가능 프레임 워크로 업그레이드해야한다고 제안하지 마십시오. 유니 코드 지원 자체는 당연히 "유니 코드 버전"에서처럼 델파이의 "비 유니 코드"버전에서 (직접적으로) 액세스 할 수있는 기본 Windows API에 의해 제공됩니다.
질문에 설명 된 목적을 위해 필요한 모든 유니 코드 지원의 대부분은 the JEDI JCL에 제공된 유니 코드 지원에서 얻을 수 있다고 생각합니다.
모든 시각 구성 요소를 지원하려면 TNT control set이 무료라는 매력이 있어야합니다.
- 1. AnsiString을 유니 코드 문자열로 변환
- 2. C++에서 문자열로 작업하기
- 3. MFC는 파일에서 유니 코드 문자열을 문자열로 읽습니다.
- 4. Perl에서 문자열을 유니 코드 문자열로 변환하는 방법
- 5. 유니 코드 경로를 C 문자열로 변환하려면 어떻게해야합니까?
- 6. Delphi 2009의 유니 코드 콘솔 응용 프로그램
- 7. Delphi <2009, JvAppStorage의 유니 코드 대체
- 8. delphi 2009의 유니 코드 및 특수 문자
- 9. Delphi 유니 코드 문자열 유형 직접 주소 (또는 "유니 코드 ShortString")에 저장
- 10. 유니 코드를 Delphi 2009에서 Delphi 2009로 포팅
- 11. null로 끝나는 메모리 스트림을 유니 코드 문자열로 변환
- 12. 문자, 문자열, 유니 코드 등을 다루는 Delphi 7과 Delphi 2009의 차이점은 무엇입니까?
- 13. SSIS 2008 - 유니 코드 문자를 추출하고 비 유니 코드 문자열로 남겨 두는 방법
- 14. Delphi 2009의 delphi 5 코드 컴파일
- 15. 유니 코드 창에서 비 유니 코드 WM_CHAR
- 16. Delphi 7에서 EXE 아이콘 설정
- 17. Delphi 7에서 "컨트롤 이름 바꾸기"?
- 18. Delphi 7에서 TPageControl을 평평하게 만들기
- 19. Delphi 7에서 OutputDebugString을 무시 하시겠습니까?
- 20. HTML 엔티티를 c의 유니 코드 (utf-8) 문자열로 변환 하시겠습니까?
- 21. Windows 서비스 : 지정된 시간에 작업하기 (Delphi)
- 22. Delphi 2009의 텍스트 파일에서 유니 코드 문자 읽기
- 23. 유니 코드 버전 없음 HTML Delphi 용으로 깔끔합니까?
- 24. Delphi 6에서 SQL Server 유니 코드 문자열 읽기
- 25. iPhone : 유니 코드를 문자열로 변환
- 26. 이전 델파이 버전의 유니 코드
- 27. 게임에서 유니 코드 입력 처리
- 28. 코드 완료가 Delphi 2009에서 작동하지 않습니다.
- 29. 파이썬 유니 코드 : 유니 코드 문자열에 대해 테스트하는 방법
- 30. 유니 코드/비 유니 코드/UTF-8 문제
+1 답안의 모든 좋은 비트. bigsets, TNT와 D7에서이 작업을하지 않는 것이 좋습니다. –
여기에 더 유용한 코드를 작성했습니다. Tofig –
Delphi 2010 TStringList 클래스의 가장 큰 기능 중 하나는 디스크에서 파일을로드하고 바이트 마커에서 UTF8 또는 UTF16 인코딩을 자동으로 결정하는 기능입니다. 이것이 Tofig의 또 다른 부분 인 Tofig입니다. 2009/2010보다 오래된 Delphi 버전에서 더욱 까다로워 질 것입니다. –