Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Шифрация текста по таблице Виженера.   Найти похожие ветки 

 
Lyonux ©   (2010-04-27 19:51) [0]

Доброго времени суток!
При написания данного шифратора возникла проблема с кодировкой: при выводе алфавитов ключевого слова в StringGrid выводятся первые две буквы алфавита, остальное пространство заменяется символами "|".


type
   ABCmatr=array[1..32] of char;
var
 Form1: TForm1;
//массивы, содержащие алфавиты ключевого слова
//OrgABC-стандартный алфавит а..я
 OrgABC,ABC1,ABC2,ABC3,ABC4,ABC5,ABC6,ABC7,ABC8:ABCmatr;

//создание оригинального алфавита и запись в заголовок StringGrid"a
Procedure AlphaBetOriginal(Sender:TObject);
var i:byte;
   lit:char;
begin
i:=1;
for lit:="а" to "я" do
 begin
  Form1.StringGrid1.Cells[0,i]:=lit;
  OrgABC[i]:=lit;
  inc(i);
 end;
end;

//создание нового алфавита по конкретной букве слова
function NewMiniAlphaBet(x:char):ABCmatr;
//вычисление закодированной буквы
function NewLittera(y,y1:char):char;
begin
 NewLittera:=chr(ord(y)+ord(y1));
end;
var i:byte;
    a:ABCmatr;
begin
for i:=1 to 32 do
  if i+ord(x)<=182 then
   a[i]:=NewLittera(OrgABC[i],x)
  else
  a[i]:=chr(ord(NewLittera(OrgABC[i],x))-31);
end;

//запись алфавитов всех букв ключевого слова
procedure NewGrateAlphaBet(Sender: TObject);
var s:string;
   i:byte;
begin
s:=Form1.Edit1.Text;
 for i:=1 to length(s) do
  case i of
  1:ABC1:=NewMiniAlphaBet(s[i]);
  2:ABC2:=NewMiniAlphaBet(s[i]);
  3:ABC3:=NewMiniAlphaBet(s[i]);
  4:ABC4:=NewMiniAlphaBet(s[i]);
  5:ABC5:=NewMiniAlphaBet(s[i]);
  6:ABC6:=NewMiniAlphaBet(s[i]);
  7:ABC7:=NewMiniAlphaBet(s[i]);
  8:ABC8:=NewMiniAlphaBet(s[i]);
  end;
end;

//загрузка алфавитов в StringGrid
procedure LoadToGrid(Sender: TObject);
var i:byte;
begin
for i:=1 to 32 do
 with Form1.StringGrid1 do
begin
 Cells[1,i]:=ABC1[i];
 Cells[2,i]:=ABC2[i];
 Cells[3,i]:=ABC3[i];
 Cells[4,i]:=ABC4[i];
 Cells[5,i]:=ABC5[i];
 Cells[6,i]:=ABC6[i];
 Cells[7,i]:=ABC7[i];
 Cells[8,i]:=ABC8[i];
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
AlphaBetOriginal(Sender);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
NewGrateAlphaBet(Sender);
LoadToGrid(Sender);
end;


Помогите, кто чем сможет, пожалуйста :) В чём проблема: неправильное создание новых алфавитов, неправильная запись в StringGrid или что-нибудь ещё? Буду очень благодарна. :)


 
И. Павел ©   (2010-04-27 21:01) [1]

ABC[i] заполняется функцией NewMiniAlphaBet, а она ничего не возвращает.

И еще: может я чего-то не понял, но этот кусок кода выглядит странновато:

for i:=1 to length(s) do
 case i of
 1:ABC1:=NewMiniAlphaBet(s[i]);
 2:ABC2:=NewMiniAlphaBet(s[i]);
 3:ABC3:=NewMiniAlphaBet(s[i]);
 4:ABC4:=NewMiniAlphaBet(s[i]);
 5:ABC5:=NewMiniAlphaBet(s[i]);
 6:ABC6:=NewMiniAlphaBet(s[i]);
 7:ABC7:=NewMiniAlphaBet(s[i]);
 8:ABC8:=NewMiniAlphaBet(s[i]);
 end;


 
Lyonux ©   (2010-04-27 21:09) [2]


> И. Павел ©   (27.04.10 21:01) [1]
> ABC[i] заполняется функцией NewMiniAlphaBet, а она ничего
> не возвращает.


Оооогромное спасибо! Т_Т Я бы сама никогда этого не заметила) Вы - мой спаситель) Оно заработало!



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.145 c
11-1217821090
L`Autour
2008-08-04 07:38
2010.08.27
Как установить ширину PopupMenu при OwnerDraw = True


2-1270543077
Александр Чернявский
2010-04-06 12:37
2010.08.27
Вопрос к компоненте TImage


15-1274432547
boriskb
2010-05-21 13:02
2010.08.27
Можно не всё сразу а выборочно?


2-1274855695
Rembo
2010-05-26 10:34
2010.08.27
Картинку из файла уменьшить и поместить в tbitmap


15-1269981002
Юрий
2010-03-31 00:30
2010.08.27
С днем рождения ! 31 марта 2010 среда