Работа с Unicode представляет в виде строки в Delphi 7

Я должен записать программу, которая просмотрит строки различных длин и выберет только тех, которые записаны с помощью символов из набора, определенного мной (особенно японские буквы). Строки будут содержать слова, записанные на различных языках (немецкий, французский, арабский, русский, английский язык и т.д.). Очевидно, существует огромное количество возможных символов. Я не знаю который структура использовать для этого? Я использую Delphi 7 прямо сейчас. Кто-либо может предложить, как записать такую программу?

7
задан Makoto 29 April 2012 в 18:28
поделиться

3 ответа

Очевидно, вам будет лучше с 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;
12
ответ дан 6 December 2019 в 08:14
поделиться

Существует свойство ReceiveTimeout, которое можно использовать.

-121--2058257-
  1. это должно быть < select style = «шириной: 400px;» > (не « ширины = »)
  2. обычный HTML-выбор не имеет полосы прокрутки, независимо от того, что вы делаете:)
-121--3594922-

Я также рекомендую перейти на Delphi 2010 (зачем больше беспокоиться о 2009?)!

Если в маловероятном случае вы застряли с Delphi 7, то Unicode Library от Майка Лишке может оказаться несколько полезным.

5
ответ дан 6 December 2019 в 08:14
поделиться

Для простой обработки строк описанным вами способом не откладывайте предложения о том, что вам следует перейти на последнюю версию компилятора и фреймворка с поддержкой Unicode. Сама поддержка Unicode, конечно, обеспечивается лежащим в основе Windows API, который, конечно же (напрямую) доступен из версий Delphi, не поддерживающих Unicode, так же, как и из версий Unicode.

Я подозреваю, что большая часть, если не вся поддержка Unicode, которая вам нужна для целей, указанных в вашем вопросе, может быть получена из поддержки Unicode, представленной в JEDI JCL .

Для поддержки любых визуальных компонентов вам может потребоваться TNT control set , который привлекает своей бесплатной.

5
ответ дан 6 December 2019 в 08:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: