Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2015, 16:31   #1
garuna
Форумчанин
 
Аватар для garuna
 
Регистрация: 13.04.2013
Сообщений: 180
Вопрос Что нужно исправить для правильной работы с UNICODE?

Пишу на Delphi XE, нужно зашифровать и расшифровать строку содержащую русские буквы, при этом в проекте не должны быть подключены другие модули кроме Windows.pas. Нашел на просторах инета такой код, он отлично отрабатывает если строка содержит только латинские буквы и цифры, но не работает если входная строка содержит кириллицу.... Подскажите, как заставить эти функции работать с кириллицей?? Или может у вас есть другой ПРОСТЕЙШИЙ алгоритм шифрования, не требующий подключения дополнительных модулей и работающий с кириллицей, буду благодарен!

Код:
function Crypt(Str, Key: String): String;  //шифрование
var
  i, q: Integer;
begin
  for i := 1 to Length(Str) do
    begin
      q := (Ord(Str[i]) + (Ord(Key[(Pred(i) mod Length(Key)) + 1]) - Ord('0')));
        if q >= 256 then Dec(q, 256);
      Str[i] := Chr(q);
      Result := Str;
    end;
end;

function DeCrypt(Str, Key: String): String; //расшифровка
var
  i, q: Integer;
begin
  for i := 1 to Length(Str) do
    begin
      q := (Ord(Str[i]) - (Ord(Key[(Pred(i) mod Length(Key)) + 1]) - Ord('0')));
        if q < 0 then Inc(q, 256);
      Str[i] := Chr(q));
      Result := Str;
    end;
end;
garuna вне форума Ответить с цитированием
Старый 20.09.2015, 17:22   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

String замени на AnsiString

P.S. Кстати, Crypto API заюзать не желаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.06.2016, 12:52   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
String замени на AnsiString

P.S. Кстати, Crypto API заюзать не желаешь?
Так должно быть
Код:
function Crypt(Str, Key: String): AnsiString;  //шифрование
function DeCrypt(Str, Key: String): AnsiString; //расшифровка
Или ещё где произвести замену String замени на AnsiString?
Shouldercannon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как исправить тип параметра для UNICODE? taras-proger Win Api 13 14.09.2015 12:18
Кто поможет с кодом Delphi для построения графика y=sqrt x. что нужно исправить? kikiru Помощь студентам 3 16.05.2013 08:30
Нужно исправить ошибку в программе работы с файлами. ameks94 Паскаль, Turbo Pascal, PascalABC.NET 2 25.11.2012 23:36
Какой компонент выбрать для более правильной работы с точки зрения программирования? (Delphi) Art_Divin Помощь студентам 3 09.03.2010 13:43