Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизШифрация текста по таблице Виженера. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.067 c