Уважаемые спецы, помогите кто сможет.
Пишу я кодировщик Хоффмана. И возникает такая трабла: вот функция, которая записывает в узлы дерева веса встречающихся в файле символов. Суммирует для каждого символа частоты вхождения.
Всё бы хорошо, но только она почему-то работает только для английских букв и цифр. Русские буквы и спец символы не заносит.
Ничего не могу понять. Вроде бы ord даёт коды всех 255 символов ASCII?
Но у меня почему-то веса русских букв остаются нулевыми...
Или я чё-то не то делаю?
Procedure Symbol;
var
a: array [0..511-1] of Object;
num2:Integer;
Strin: AnsiChar;
begin
TFS := TFileStream.Create('C:\ff.txt', fmOpenRead);
while TFS.Position <> TFS.Size do
begin
TFS.Read(Strin, 1);
num2:=ord(Strin);
a[num2].Ves:=a[num2].Ves+1;
end;
TFS.Free;
end;
Добавлено: Долго не мог понять в чем дело, вываливается Acces Violation и всё.
Потом заметил, что это происходит только если в файле есть русские буквы.
Если файл полностью состоит из английских букв (но без спец символов), то всё жмется замечательно.
Вобщем кодер жмет только "чисто английский текст"