Я должен записать программу, которая просмотрит строки различных длин и выберет только тех, которые записаны с помощью символов из набора, определенного мной (особенно японские буквы). Строки будут содержать слова, записанные на различных языках (немецкий, французский, арабский, русский, английский язык и т.д.). Очевидно, существует огромное количество возможных символов. Я не знаю который структура использовать для этого? Я использую Delphi 7 прямо сейчас. Кто-либо может предложить, как записать такую программу?
Очевидно, вам будет лучше с Delphi 2010, поскольку VCL в delphi 7 не поддерживает строки Unicode. Вы можете использовать типы WideString и WideChar в Delphi 7, и вы можете установить набор компонентов, например TNT Unicode Components, чтобы помочь вам создать пользовательский интерфейс, который может отображать ваши результаты.
Для типа с очень большим набором рассмотрите возможность использования битового массива, такого как 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;
Существует свойство ReceiveTimeout, которое можно использовать.
-121--2058257- < select style = «шириной: 400px;» >
(не « ширины =
») Я также рекомендую перейти на Delphi 2010 (зачем больше беспокоиться о 2009?)!
Если в маловероятном случае вы застряли с Delphi 7, то Unicode Library от Майка Лишке может оказаться несколько полезным.
Для простой обработки строк описанным вами способом не откладывайте предложения о том, что вам следует перейти на последнюю версию компилятора и фреймворка с поддержкой Unicode. Сама поддержка Unicode, конечно, обеспечивается лежащим в основе Windows API, который, конечно же (напрямую) доступен из версий Delphi, не поддерживающих Unicode, так же, как и из версий Unicode.
Я подозреваю, что большая часть, если не вся поддержка Unicode, которая вам нужна для целей, указанных в вашем вопросе, может быть получена из поддержки Unicode, представленной в JEDI JCL .
Для поддержки любых визуальных компонентов вам может потребоваться TNT control set , который привлекает своей бесплатной.