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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2013, 23:20   #1
GigGalaxy
Новичок
Джуниор
 
Регистрация: 07.12.2013
Сообщений: 3
По умолчанию Помогите написать программу."кодировка"

Итак, я решил сделать мелку задумку(странная конечно), но вот её тема я хочу сделать "кодировку" текста, тоесть при вводе например буквы А мне выдает B! и обратный процесс, но пока что я еду не тем путём, а именно таким:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}




procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if Key = 65 then
edit2.Text:='B!';


if Key = 66 then
edit5.Text:='T!@';
end;

end.
Вот так...1. я чайник)2.Мне нужно прописывать каждую букву таким путём?3.Как сделать обратный процесс 4. как сделать так что бы все "коды" писались в одну лэйбу?...

Последний раз редактировалось Stilet; 08.12.2013 в 12:43.
GigGalaxy вне форума Ответить с цитированием
Старый 07.12.2013, 23:36   #2
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Например так. Создайте константный массив
Код:
const Kluc:array[0..255]of Byte=(7,5,   // и т.д. 

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var n:Byte;
begin
 n:=Key;
 edit2.Text:=Char(Kluc[n]); // 1 символ 
end;
Например, если Kluc[55]=66, то вместо символа с кодом 55 будет символ с кодом 66
Правда, Key - типа Word, то есть может больше 255, то коды букв, цифр - они до 255.
Аналогично и дешифрация.

Или так
Код:
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if (Key>32)and(Key<256) // коды до 32 лучше не трогать
  then Edit2.Text:=Edit2.Text+Char(Kluc[Key]) // символы накапливаюся в Edit2
  else Exit;
end;

Последний раз редактировалось type_Oleg; 08.12.2013 в 00:33.
type_Oleg вне форума Ответить с цитированием
Старый 08.12.2013, 12:27   #3
GigGalaxy
Новичок
Джуниор
 
Регистрация: 07.12.2013
Сообщений: 3
По умолчанию

Помогите сделать дешифрацию, пробовал так
Код:
const a:array[0..104]of Byte=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,221,15,16,17,18,19,20,23,22,21,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105);
procedure TForm1.Edit3KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
var i:integer;
begin
for i:=1 to length(edit1.text) do
edit4.text:=edit4.text+a[edit1.text];
end;
Но мне ругается на i
Код:
[DCC Error] Unit1.pas(53): E2010 Incompatible types: 'Integer' and 'TCaption'
[DCC Warning] Unit1.pas(53): W1058 Implicit string cast with potential data loss from 'TCaption' to 'ShortString'

Последний раз редактировалось GigGalaxy; 08.12.2013 в 17:21.
GigGalaxy вне форума Ответить с цитированием
Старый 08.12.2013, 17:59   #4
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,504
По умолчанию

Ну так написано же - тип не тот..
Вот здесь
Код:
edit4.text:=edit4.text+a[edit1.text];
edit1.text - тип TCaption, он же string, а индекс массива должен быть целым, то есть Byte или Word или Integer , и т.д.
Может быть так
Код:
edit4.text:=edit4.text+a[Ord(edit1.text[i])];
где edit1.text[i] - i-й символ текста
Ord(edit1.text[i]) - код этого символа

PS А почему используете только событие KeyUp у Edit? Может, лучше посадить на форму пару Button ?

Последний раз редактировалось type_Oleg; 08.12.2013 в 18:06.
type_Oleg вне форума Ответить с цитированием
Старый 08.12.2013, 18:57   #5
GigGalaxy
Новичок
Джуниор
 
Регистрация: 07.12.2013
Сообщений: 3
По умолчанию

Спасибо, btn посадил, все работает)
GigGalaxy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста, написать программу в Паскаль по теме "Множества" SArtem Помощь студентам 10 19.12.2009 11:40
Помогите написать программу по расчёту налога для кур.раб.по теме:"Налоги в модели Неймана" tanushkaroganova Помощь студентам 0 05.05.2009 11:52