Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.03.2012, 17:18
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию программа не хочет кодировать русские символы

Никак не могу разобраться. Программа может закодировать символы только английского алфавита, но при вводе русских символов в программе выскакивает ошибка (как будто принимает за пробелы) и кодирует по алгоритму Хаффмана только анлийские символы. Везде смотрел, немогу найти причину.
Помогите разобраться пожалуйста.

Последний раз редактировалось delphihelp, 08.03.2012 в 13:25.
Ответить с цитированием
  #2  
Старый 07.03.2012, 17:49
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

попробовал в модуле unit1.pas поменять тип данных со стринг в ansistring в
Код:
procedure TForm1.Button2Click(Sender: TObject); 
var  myStr : ansiString; 
то стало записывать символы, но крякозябрами.
Ответить с цитированием
  #3  
Старый 07.03.2012, 18:58
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

почитав в интернете я понял, что оказывается в программе все делается по кодировке ansi, а мне получается нужен unicode, чтобы не выдавало ошибок при нажатии при русской раскладке клавиатуры. хотя может я и ошибаюсь, но тут дело скорее всего в кодировке.

Последний раз редактировалось delphihelp, 07.03.2012 в 19:02.
Ответить с цитированием
  #4  
Старый 07.03.2012, 19:48
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Да, тут дело в кодировке, но также и в твоей программе. Если ord('я') (последняя буква русского алфавита) =1103, а у тебя размер массива = 256, то понятно, что никакого символа под индексом [1103] не будет. Попробуй увеличить размер массивов до 1280 (константа ALPHABETSIZE), и строку
Код:
sg1.RowCount:=dltxt+1;
поменять на
Код:
sg1.RowCount:=dltxt;
.
У меня так работает как минимум.
Ответить с цитированием
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение:
delphihelp (08.03.2012)
  #5  
Старый 08.03.2012, 11:46
delphihelp delphihelp вне форума
Прохожий
 
Регистрация: 21.02.2012
Сообщения: 22
Репутация: 10
По умолчанию

Cпасибо. А ведь правда в кодировке ANSI 255 символов, а в Unicode гораздо больше 65 536 символов кажется .Только я же думал что в кодировке ANSI есть русские буквы. А их видимо там нету. А программа вообще брала из Unicode.
Ура, теперь все символы отображаются. Даже не знаю как тебя благодарить.

Последний раз редактировалось delphihelp, 08.03.2012 в 13:27.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025