...

Листинг 12.3.

Реализация метода проверки допустимости перестановки

function TfmSubstitution.ValidateRearrangement: Boolean;

var

i: Integer;

s: String;

Used: array [Char] of Boolean;

begin

Result := False;

FillChar(Used, SizeOf(Used), False);

for i := 1 to vleSubst.RowCount – 1 do

Begin

//символ единственный в строке?

s := vleSubst.Cells[1, i];

if (Length(s) <> 1) then

Exit;

//символ – буква русского языка?

s[1] := UpCaseRus(s[1]);

if not (s[1] in [\'А\'..’Я’]) then

Exit;

//уже встречался ранее?

if Used[s[1]] then Exit;

Used[s[1]] := True;

End;

Result := True;

end;

Далее мы реализуем две вспомогательные функции, которые позволят преобразовать буквы верхнего регистра к нижнему и наоборот. Их реализация немного специфична и основывается на используемой кодировке. Отдельная проверка буквы «Ё» производится на основании иного расположения в таблице кодировки, чем у остальных букв. Буквы русского алфавита верхнего регистра расположены начиная с «А» по порядку следования в алфавите, а сразу после них аналогично расположены буквы нижнего регистра. Этим объясняется увеличение кода буквы на фиксированное число. Реализация данных вспомогательных функций приведена в листинге 12.4.

Загрузка...