Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массивы [D7, WinXP]


alec_sey ©   (2006-05-25 10:14:00) 

Подскажите где я неправильно делаю. Задача: нужно вводимую строку присвоить массиву затем разбить на двумерный частоколом(т. е чётные вверху не чётные в низу или на оборот)
затем его снова так-же нужно записать в одну строку частоколом. Что бы не разбивать массив а затем собирать
хотел сделать так см. ниже

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   SG: TStringGrid;
   MaskEdit1: TMaskEdit;
   MaskEdit2: TMaskEdit;
   XPManifest1: TXPManifest;
   Label1: TLabel;
   Label2: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure FormActivate(Sender: TObject);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   { Private declarations }
 public
   { Public declarations }
 end;
const Digits: array[0..32] of Char = ('à','á','â','ã','ä',
'å','¸','æ','ç','è','é','ê','ë','ì' ,'í','î',
'ï','ð','ñ','ò','ó','ô','õ','ö','÷' ,'ø','ù','ü','ú','ý','û',
'þ','ÿ');// русский алфавит
var
 Form1: TForm1;
       var i,j,len,p:integer;
       S:string;
       abc,abcres:array of integer;
       k1,k2,k3,k4:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 Label1.Caption:='';    Label2.Caption:='';
MaskEdit2.Text:='';
SetLength(abc,0); SetLength(abcres,0); len:=0; p:=-1;
S:=MaskEdit1.Text;
len:=Length(S);

if len  mod 2 = 0 then begin
SetLength(abc,len);
SetLength(abcres,len);
 for i:=1 to len do begin
  for j:=0 to 32 do
   if S[i]=Digits[j] then abc[i-1]:=j;
end;
end else begin
len:=len+1;
 SetLength(abc,len);
 SetLength(abcres,len);
  for i:=1 to len-1 do begin
   for j:=0 to 32 do
    if S[i]=Digits[j] then begin
      abc[i-1]:=j;
       abc[len-1]:=0;
end;
end;
end;
k1:=strtoint(SG.Cells[0,0]);
k2:=strtoint(SG.Cells[1,0]);
k3:=strtoint(SG.Cells[0,1]);
k4:=strtoint(SG.Cells[1,1]);

Хотел так получить конечный результат но что то неправильно
{
for i:=0 to len-1 do begin
if i mod 2 = 0 then begin
p:=p+1;
abcres[p]:=k1*abc[i]+k2*abc[i+1];

end;
 end;
for i:=0 to len-1 do begin
if i mod 2 0 then begin
p:=p+1;
 abcres[p]:=k3*abc[i]+k4*abc[i+1];
end;
 end;}

for i:=0 to len-1 do  begin
Label1.Caption:=Label1.Caption+IntToStr(abcres[i])+',';
if abcres[i]>32 then begin
while abcres[i]>32 do
abcres[i]:=abcres[i]-33;
   end;
for j:=0 to 32 do begin
 if abcres[i]=j then
  MaskEdit2.Text:=MaskEdit2.Text+Digits[j];
 end;
end;
for i:=0 to len-1 do
Label2.Caption:=Label2.Caption+IntToStr(abcres[i])+',';

end;

procedure TForm1.FormActivate(Sender: TObject);
begin
SG.Cells[0,0]:=IntToStr(0);
SG.Cells[1,0]:=IntToStr(10);
SG.Cells[0,1]:=IntToStr(9);
SG.Cells[1,1]:=IntToStr(2);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 SetLength(abc,0);
   SetLength(abcres,0);
end;

end.


REA   (2006-05-25 12:37:00) [1]

ну вобщем ты понял...


alec_sey   (2006-05-25 10:31:00) [2]

Ну вобщем я тут нагородил. Нужно сделать программу шифровки(это с криптографии кажить аффиный шифр если не ошибаюсь)


alec_sey   (2006-05-25 10:21:00) [3]

А и забыл его после разбиегния нужно ещё умножить на ключ SG затем
только разложить


Наверх

Титульная страница Поиск, карта сайта Написать письмо