Я предполагаю, что sCatName
и CatNode.CatName
определены как string
s (= UnicodeString
s) ?. Они должны быть.
Нет необходимости преобразовывать строки в строки с нулевым символом в конце! Это вам (в основном) нужно делать только при работе с Windows API.
Если вы хотите проверить равенство двух строк, используйте SameStr(S1, S2)
(сопоставление с учетом регистра) или SameText(S1, S2)
(сопоставление без учета регистра), или просто S1 = S2
в первом случае. Все три параметра возвращают true
или false
, в зависимости от равенства строк.
Если вы хотите получить числовое значение, основанное на порядковых значениях символов (как при сортировке), используйте CompareStr(S1, S2)
или CompareText(S1, S2)
. Они возвращают отрицательное целое число, ноль или положительное целое число.
(Возможно, вы захотите использовать функции Ansi-
: AnsiSameStr
, AnsiSameText
, AnsiCompareStr
и AnsiCompareText
; эти функции будут использовать текущую локаль. Функции, отличные от Ansi-
, примут третью , необязательный параметр, явно указывающий используемый языковой стандарт.)
Обновление
Пожалуйста, прочитайте комментарии Реми Лебо относительно причины проблемы.