Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 22
1

Таблица ASCI

29.04.2016, 08:59. Показов 1404. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
День добрый, нужна помощь Есть две процедуры:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//зашифровка
  procedure Code (Var text:string; password:string);
  Var i:integer;  PasswordLength: integer;
     begin
      PasswordLength := length(password);
      if PasswordLength = 0 then Exit;
         for i:=1 to Length(text) do
           text[i] := chr(ord(text[i]) + ord(password[i mod PasswordLength + 1]));
     end;
  //расшифровка
  procedure Decode (Var text:string; password:string);
  Var i:integer;  PasswordLength: integer;
     begin
      PasswordLength := length(password);
      if PasswordLength = 0 then Exit;
         for i:=1 to Length(text) do
      //из текста в числа Ord. из чисел в текст Chr
           text[i] := chr(ord(text[i]) - ord(password[i mod PasswordLength + 1]));
     end;
На форме два Memo, две кнопки (расшифровать и зашифровать) и Edit, в который вводится ключ. Все работает, НО:алгоритм заключается в простом сложении кодов из таблицы ASCI. НУЖНО, чтобы полученное путем сложения кодов число не выходило за границы существующих кодов таблицы. А то он текст обрезает... Вызов процедур:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
procedure TForm1.Button1Click(Sender: TObject);
//кнопка зашифровать
Var s:string;
begin
    s := Memo1.Text;
    code(s, Edit1.Text);
    Memo2.Text:= s;
end;
//кнопка расшифровать
procedure TForm1.Button2Click(Sender: TObject);
var s:string;
begin
  s:=Memo2.Text;
   Decode(s, Edit1.Text);
   Memo1.Text:= s;
end;
Помогите пожалуйста!

Добавлено через 29 минут
Я так поняла, в таблице 255 символов, последний из которых - "я". Пробовала по ключу "я" закодировать одну букву "я" и он мне выдал "ю". Следовательно, он не нуждается в дополнительных условиях, и сам, при выходе за пределы таблицы, начинает с начала. Вопрос: почему он иногда обрезает текст, если дело не в границах?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.04.2016, 08:59
Ответы с готовыми решениями:

ASCI
Вводится символ, возвращается ASCI-код этого символа string pattern = @""; outBox2.Text =...

код ASCI в char
Всем привет! знаю что в интернете много таких тем, но ни одна не помогла... у меня вместо символов...

Умножение чисел в ASCI-формате
Нужно было написать программу вычисление произведение 1723893618 * 6, используя для обеих...

Перевод символов в ASCI код
Подскажите, как можно получить код символа (char) в соответствии с кодовой таблицей ASCI?

23
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
29.04.2016, 10:40 21
Author24 — интернет-сервис помощи студентам
Я про текстовый файл. Вы видимо где-то скопировали текст, в нем сохранилось исходное форматирование, которое не дает его читать как одну строку. Создайте файл сами в Блокноте и попробуйте работать с ним.
0
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 22
29.04.2016, 10:55  [ТС] 22
Цитата Сообщение от BOGG ART Посмотреть сообщение
Надо добавить:
Не совсем поняла зачем, но добавила) Верю "на слово".

Добавлено через 4 минуты
Может, но почему он с ключом "1" все делает, а "кожа" вот именно ему не понравилась?)))

Добавлено через 2 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
Создайте файл сами в Блокноте и попробуйте работать с ним.
попробовала, и мой обрезал(((
0
592 / 459 / 147
Регистрация: 09.12.2013
Сообщений: 2,385
Записей в блоге: 2
29.04.2016, 11:17 23
Лучший ответ Сообщение было отмечено stylecolor как решение

Решение

Предыдущие
Цитата Сообщение от BOGG ART Посмотреть сообщение
Файл > Открыть > (выпадающий список из двух пунктов) - это жутко неудобно. Сделайте на одном уровне:
  • Файл > Открыть А
  • Файл > Открыть Б
Надо добавить:
Delphi
1
2
3
4
5
6
7
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form3.Edit1.Text:='';
Form3.Edit2.Text:='';
Form3.Label4.Caption:='';
Form3.Show;
end;

Новые
У вас в Form1 съехал Memo1, оно выше чем надо.
Надо нажать правой кнопкой мыши на Image1 и выбрать "Control > Send to Back", и хорошо бы включить Proportional и Stretch.
Всем TLabel на Form1 надо включить Transparent и выбрать цвет шрифта подходящий, а самой Form1 задать цвет:
Delphi
1
2
3
4
procedure TForm1.FormCreate(Sender: TObject);
begin
Color:=RGB(235,215,160);
end;

Непосредственно проблема
Delphi
1
2
i2:=i mod PasswordLength + 1;
text[i] := chr((ord(text[i]) + ord(password[i2])mod 256));
text[i] - пробел;
password[i2] - русская "а";
Результат - символ #0 - текст обрезается нафик;

То же самое при "Р" / "0" (русская заглавная Рэ и нуль).

Вероятно что-то не так там где mod. Думаю скобки надо добавить. И не 256, а 255. Хотя не соображу полностью ли это исправит проблему.
1
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 22
29.04.2016, 11:22  [ТС] 24
СПАСИБО
0
29.04.2016, 11:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.04.2016, 11:22
Помогаю со студенческими работами здесь

Перевод ASCI в ASCII и наоборот
Добрый день учень нужна помощь... немогу никак разобраться с проблемой перевода кодировок, мне...

Modbus rtu или asci на mega128
Доброго времени суток уважаемые форумчане! Стоит задача реализовать modbus на mega128 для связи МК...

Показать asci код нажатой клавиши
Надо написать прогу на встроенном асемблере, которая будет показывать asci код нажатой клавиши и по...

Вывести на экран ASCI-символы заглавных букв
Помогите новичку в Ассемблере.. Задача: Вывести на экран ASCI-символы заглавных букв.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru