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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2007, 13:40   #1
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию Побуквенное шифрование текста!

Помогите пожалуйста,
У меня имеется memo1,memo2, button1.
Необходимо, чтоб при вводе слова в memo1 и нажатии button1 в memo2 отображались те символы, которые я присвоил соответсвующим буквам.
Символы должны иметь тип string, потому что у меня , например
букве 'a' соответствует символ 'A@'
'b' -----------------------'B'
'c' -----------------------'c$'.
То есть мой вопрос в том, как программно написать это соответствие и чтоб в символы перевелось целиком введенное слово.
Заранее говорю, подглаву Шифрование я сморел на форуме, там есть шифрование отдельных символов и шифрование текста с ключем. А у меня просто надо написать соответствие. Заранее благодарю всех кто окажет хоть какую то помощь
Gauss вне форума Ответить с цитированием
Старый 11.12.2007, 18:35   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Непонятно большая часть вашего текста. Как я понял просто перебирая один текст вставлять соответствие в другой ? если да то букв одинаково поэтому Вам стоит всеголиш создать два массива как константы или генерировать в ходе программы типа String; после внести в один символ простой ( букву ), а во второй Вашего соответствие. Потом функция для шифрования будет выглядеть примерно так:

допустим Ваши буквы в массиве Symbols, а шифровка в EnSymbols;

как я вижу ваше соответстиве на одну букву приходится два символа ?
Если да то можно ускорить процесс шифровки ( если текст довольно таки большой ).

так же для ускорения создайте массив для 0..255 - и при внесении просто ну вот допустим букву a ->> Symbols[ord('a')] := 'a'; вот таким образом.

function EncodeText(Str: String): String;
var
i: Integer;
begin
// ускорение процесса
SetLength(Result, Length(Str) * 2);
for i:= 1 to Length(Str) do
begin
Result[i * 2 - 1] := EnSymbols[ord(Str[i])][1];
Result[i * 2] := EnSymbols[ord(Str[i])][2];
end;
end;

Вроде так, исходя из выше Вами описанного.
BOBAH13 вне форума Ответить с цитированием
Старый 11.12.2007, 18:55   #3
Dude_first
Пользователь
 
Регистрация: 30.08.2007
Сообщений: 25
По умолчанию

Можно ещё так
Код:
function sr(s:char):string;
begin
case s of
'a': sr:='a$';
'b': sr:='fd';
//тут прописываешь замену для каждого симвла
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var temp:string;
    i:byte;

begin
temp:=edit1.Text;
 for I:=1 to length(temp) do begin
  edit2.Text:=edit2.Text+sr(temp[i]);
 end;
end;
Это для TEdit. Аналогично можно делать и в TMemo. Удачи
Dude_first вне форума Ответить с цитированием
Старый 11.12.2007, 23:37   #4
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Спасибо большое Dude_first , правда я еще код этот не пробовал, только посморел ща, но думаю это то что мне надо! Спасибо, если не получится я тут опять напишу ))))
Gauss вне форума Ответить с цитированием
Старый 12.12.2007, 11:39   #5
Gauss
Форумчанин
 
Аватар для Gauss
 
Регистрация: 26.11.2007
Сообщений: 235
По умолчанию

Dude_first --- Чувак огромное тебе спасибо!!! сработало все!
Gauss вне форума Ответить с цитированием
Старый 22.08.2013, 20:19   #6
fnc
 
Регистрация: 30.04.2013
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Dude_first Посмотреть сообщение
Можно ещё так
Код:
function sr(s:char):string;
begin
case s of
'a': sr:='a$';
'b': sr:='fd';
//тут прописываешь замену для каждого симвла
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var temp:string;
    i:byte;

begin
temp:=edit1.Text;
 for I:=1 to length(temp) do begin
  edit2.Text:=edit2.Text+sr(temp[i]);
 end;
end;
Это для TEdit. Аналогично можно делать и в TMemo. Удачи
А как дешифровать ?
fnc вне форума Ответить с цитированием
Старый 22.08.2013, 20:27   #7
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Цитата:
Сообщение от fnc Посмотреть сообщение
А как дешифровать ?
обратным математическим действием.
kta87 вне форума Ответить с цитированием
Старый 22.08.2013, 21:53   #8
fnc
 
Регистрация: 30.04.2013
Сообщений: 3
По умолчанию

Цитата:
Сообщение от kta87 Посмотреть сообщение
обратным математическим действием.
Код:
function sr(s:char):string;
begin
case s of
'a': sr:='a$';
'b': sr:='fd';
//тут прописываешь замену для каждого симвла
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var temp:string;
    i:byte;

begin
temp:=edit1.Text;
 for I:=1 to length(temp) do begin
  edit2.Text:=edit2.Text+sr(temp[i]);
 end;
end;
Делаю все тоже самое только
Код:
edit2.Text:=edit2.Text-sr(temp[i]
Не компилирует. Выдает ошибку на минусе
fnc вне форума Ответить с цитированием
Старый 22.08.2013, 22:29   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Операцию "-" нельзя применять к строкам в Делфи.
Вообще в данном случае нужно составлять карту символов - двумерный массив, где в ячейках представлены исходные символы и символы замены.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.08.2013, 07:29   #10
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Обратное математическое действие относительно сложения, аналогичного действиям с числами, в строках нет. В Вашем случае можно попробовать замену символов.
П.С. На будущее, как и сказал Stilet, воспользуйтесь двумерными массивами. И работайте не со строками и символами напрямую, представляйте их хотя бы в ASCII коде.
kta87 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифрование текста SoundMan Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 15.08.2008 22:39
шифрование Stanislav Свободное общение 10 04.03.2008 05:09