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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2011, 21:06   #1
Vladimir-belikov
Пользователь
 
Аватар для Vladimir-belikov
 
Регистрация: 13.05.2009
Сообщений: 14
По умолчанию как правильно записать строку?

функция раскодирования строки
в строке:
s[i] := Char(23 xor Ord(c[i]));
вылезает ошибка Incompatible types: 'AnsiChar' and 'Char'
Как записать правильно?
Vladimir-belikov вне форума Ответить с цитированием
Старый 09.06.2011, 21:40   #2
Jaguar83
Профессионал
Пользователь
 
Аватар для Jaguar83
 
Регистрация: 25.05.2011
Сообщений: 91
По умолчанию

а как объявлены переменные s и с ?
Какой компилятор используете?
Помог? Будь человеком - жми на весы слева!

Последний раз редактировалось Jaguar83; 09.06.2011 в 21:43.
Jaguar83 вне форума Ответить с цитированием
Старый 09.06.2011, 21:41   #3
Vladimir-belikov
Пользователь
 
Аватар для Vladimir-belikov
 
Регистрация: 13.05.2009
Сообщений: 14
По умолчанию

s: String[255];
c: array[0..255] of Byte absolute s;
Vladimir-belikov вне форума Ответить с цитированием
Старый 09.06.2011, 21:59   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
s[i] := AnsiChar(23 xor c[i]);
1) Ord() не нужен, т.к. у вас и так массив байт
2) AnsiChar вместо Char, очевидно же
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."

Последний раз редактировалось veniside; 09.06.2011 в 23:36. Причина: третий пункт был мимо )
veniside вне форума Ответить с цитированием
Старый 10.06.2011, 08:40   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Vladimir-belikov
категорически не рекомендую использовать написанный Вами код!

посмотрите на такой пример:
Код:
function StringCoder(const s : AnsiString) : AnsiString;
var k, i : integer;
  key, sResult  : AnsiString;
begin
  key := KeyPass; // это строчка с ключём шифра - длина любая. Чем больше и случайнее - тем лучше!
  sResult := s;
  k := 1;
  for i := 1 to Length(s) do
    begin
      sResult[i] := AnsiChar((ord(sResult[i]) XOR ord(key[k])));
      inc(k);
      if (k>length(key)) then k := 1;
    end;
  StringCoder := sResult
end;
p.s. если Вы принципиально хотите закодировать строку XOR'ом с одним байтом
тогда можно так записать (но рекомендую всё же код, представленный мною выше!):
Код:
var S : AnsiString;
....
  for i := 1 to Length(s) do
      S[i] := AnsiChar((ord(S[i]) XOR 23);
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно записать функтор? nowaalex Общие вопросы C/C++ 2 01.12.2010 00:38
Как записать в memo строку за строкой используя изменения combobox? Человек_Борща Общие вопросы Delphi 3 11.04.2010 17:18
Как записать (считать) динамическую строку в (из) файл(а)? C++ Сергей089 Помощь студентам 2 10.02.2010 22:00
помогите как записать правильно в xml edik БД в Delphi 0 17.12.2009 15:39
Как правильно записать стиль Михаил Юрьевич Общие вопросы Delphi 11 30.06.2008 11:30