Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
02.05.2014
Размер:
8.96 Кб
Скачать
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include <process.h>

#include"UCSU.h"
#include"Unit_spr.h"
#include"Unit_Gr.h"
#include"FrmCalc.h"
#include"FrmAbout.h"
#include"Scr.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource"Scrambler.res"
#pragma resource"*.dfm"
TForm_Kod *Form_Kod;
AnsiString Massiv[256];
AnsiString Massiv2[256];
AnsiString Massiv_Scr[256];
AnsiString Massiv_DeScr[256];
AnsiString Stroka_Screm="";
AnsiString Stroka_DeScrem="";
AnsiString s_sluch="";
int Konez_Str=0;
AnsiString stroka="";

CScr SStrim;

//---------------------------------------------------------------------------
__fastcall TForm_Kod::TForm_Kod(TComponent* Owner)
        : TForm(Owner)
{
	Image1->Picture->Bitmap->LoadFromResourceName(
   	(THandle)HInstance, "screm2");
	Edit9->OnKeyPress=EditKeyPress;
	Bitm=NULL;
   SStrim.PB = ProgressBar1;
   SStrim.Memo = MemScrStrim;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::EditKeyPress(TObject *Sender, char &Key)
{
	Set  <char, 0, 255> Dig;
	Dig << '0' << '1' << VK_BACK;
	if (!Dig.Contains(Key))
	{
		Key = 0;
   	Beep();
   }
}
void __fastcall TForm_Kod::Button_KodClick(TObject *Sender)
{
	AnsiString s_preob="", ss="";
	stroka=Edit1->Text;
	Konez_Str=stroka.Length();
	Stroka_Screm="";
	for(int i=1;i<=Konez_Str;i++)
	{
		ss=stroka[i];
		if (stroka[i]==' ') ss=ss+' ';
		ss=ss+":       "+Dvoich_Preobr((BYTE)stroka[i]);
		Massiv[i]=Dvoich_Preobr((BYTE)stroka[i]);
		Stroka_Screm=Stroka_Screm+Massiv[i];
		s_preob=s_preob+" "+(BYTE)stroka[i];
	}
	Edit2->Text=s_preob;
	Edit3->Text=Stroka_Screm;
	if(stroka!="") Button_Screm->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::Button_ScremClick(TObject *Sender)
{
	AnsiString ss="", s_kodir="", dd="", Strok_Screm, ss1, ss2 = "";
	Stroka_DeScrem=Scrembler(Stroka_Screm,RadioGroup1->ItemIndex);
	//Edit4->Text=Stroka_Screm;
	s_kodir="";
	for(int i=1;i<=Konez_Str;i++)
 	{
  		Massiv2[i]="";
  		for(int j=1; j<=8;j++)
  			Massiv2[i]=Massiv2[i]+Stroka_DeScrem[8*(i-1)+j];
  		s_kodir=s_kodir+((char)Preobr_Chisl(Massiv2[i]));
 	}

	ss1 = s_kodir;
	Konez_Str=ss1.Length();
	for(int i = 1; i <= Konez_Str; i++)
		ss2 += Dvoich_Preobr((BYTE)ss1[i]);
   Edit4->Text = ss2;
	Edit5->Text=s_kodir;
	Button_Descrem->Enabled=true;
	Button2->Enabled=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm_Kod::Button_DescremClick(TObject *Sender)
{
AnsiString ss="", s_kodir="", Strok_DeScrem="";

Strok_DeScrem=De_Scrembler(Stroka_DeScrem,RadioGroup1->ItemIndex);
Edit6->Text=Strok_DeScrem;
s_kodir="";
for(int i=1;i<=Konez_Str;i++)
 {
  Massiv2[i]="";
  for(int j=1; j<=8;j++)
  Massiv2[i]=Massiv2[i]+Strok_DeScrem[8*(i-1)+j];
  s_kodir=s_kodir+((char)Preobr_Chisl(Massiv2[i]));
 }
Edit7->Text=s_kodir;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::Edit1Click(TObject *Sender)
{
RE_Out->Clear();
Edit1->Text="";
Edit2->Text="";
Edit3->Text="";
Edit4->Text="";
Edit5->Text="";
Edit6->Text="";
Edit7->Text="";
Button_Descrem->Enabled=false;
Button_Screm->Enabled=false;
Button2->Enabled=false;
delete Bitm;
Bitm=NULL;
TabSheet3->Caption="Процесс счета";
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::Button2Click(TObject *Sender)
{
	Application->CreateForm(__classid(TForm_Gr), &Form_Gr);
	Form_Gr->ShowModal();
	Form_Gr->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::FormDestroy(TObject *Sender)
{
	delete Bitm;
	Bitm=NULL;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::RadioGroup1Click(TObject *Sender)
{
	RE_Out->Clear();
	Edit1->Text="";
	Edit2->Text="";
	Edit3->Text="";
	Edit4->Text="";
	Edit5->Text="";
	Edit6->Text="";
	Edit7->Text="";
	Edit8->Text="";
	Edit9->Text="";
	Button_Descrem->Enabled=false;
	Button_Screm->Enabled=false;
	Button2->Enabled=false;
	Bt_Prov->Enabled=false;
	delete Bitm;
	Bitm=NULL;
	Label15->Caption="Результат:";
	Label16->Caption="";
	TabSheet3->Caption="Процесс счета";
	if(RadioGroup1->ItemIndex==0)
	{
   	SStrim.i1 = 3;
      SStrim.i2 = 5;
		Image1->Picture->Bitmap->LoadFromResourceName(
      	(THandle)HInstance, "screm2");
		Label11->Caption="B(i) = A(i)^B(i-3)^B(i-5)";
		Label21->Caption="B(i) = A(i)^B(i-3)^B(i-5)";
		Label14->Caption="A(i) = B(i)^A(i-3)^A(i-5)";
	}
	if(RadioGroup1->ItemIndex==1)
	{
   	SStrim.i1 = 6;
      SStrim.i2 = 7;
		Image1->Picture->Bitmap->LoadFromResourceName(
      	(THandle)HInstance, "screm3");
		Label11->Caption="B(i) = A(i)^B(i-6)^B(i-7)";
		Label21->Caption="B(i) = A(i)^B(i-6)^B(i-7)";
		Label14->Caption="A(i) = B(i)^A(i-6)^A(i-7)";
	}
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::Bt_SluchClick(TObject *Sender)
{
Label15->Caption="Результат:";
Label16->Caption="";
srand(time(NULL));
Edit8->Text="";
s_sluch="";
int k;
for(int i=0; i<16;i++)
{
k=rand()%2;
s_sluch=s_sluch+IntToStr(k);
}
Edit8->Text=s_sluch;
Bt_Prov->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::Bt_ProvClick(TObject *Sender)
{
AnsiString s_scremb="", fff;
s_scremb=Scrembler(s_sluch,RadioGroup1->ItemIndex);
fff=Edit9->Text;
if(Edit9->Text==s_scremb) Label15->Caption="Результат: правильный";
else {Label15->Caption="Результат: неправильный";
Label16->Caption="правильный ответ -- "+s_scremb;}
}
//---------------------------------------------------------------------------
BOOL ProcessNotKill = FALSE;
void __fastcall TForm_Kod::N1Click(TObject *Sender)
{
	if(ProcessNotKill)
   {
   	Application->MessageBox("Дождитесь конца процесса", "Error",
                              MB_OK);
   }
   else Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::SBtOpenStrimFileClick(TObject *Sender)
{
	ODlgStrim->Execute();
   //MemScrStrim->Clear();
   MemScrStrim->Lines->LoadFromFile(ODlgStrim->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::SBtSaveStrimFileClick(TObject *Sender)
{
	SvDlgStrim->Execute();
   MemScrStrim->Lines->SaveToFile(SvDlgStrim->FileName);
}
//---------------------------------------------------------------------------
void Scrambl(PVOID pvoid)
{
	SStrim.ScrStrim(Form_Kod->MemScrStrim,
                   Form_Kod->MemScrStrim->Lines->Count);
   Form_Kod->SBtOpenStrimFile->Enabled = TRUE;
   Form_Kod->SBtSaveStrimFile->Enabled = TRUE;
   Form_Kod->SBtScrStrim->Enabled = TRUE;
   Form_Kod->SBtDeScrStrim->Enabled = TRUE;
   ProcessNotKill = FALSE;
   _endthread();
}
void __fastcall TForm_Kod::SBtScrStrimClick(TObject *Sender)
{
   SBtOpenStrimFile->Enabled = FALSE;
   SBtSaveStrimFile->Enabled = FALSE;
   SBtScrStrim->Enabled = FALSE;
   SBtDeScrStrim->Enabled = FALSE;
   ProcessNotKill = TRUE;
   _beginthread(Scrambl, 0, NULL) ;
}
//---------------------------------------------------------------------------
void DeScrambl(PVOID pvoid)
{
	SStrim.DeScrStrim(Form_Kod->MemScrStrim,
                     Form_Kod->MemScrStrim->Lines->Count);
   Form_Kod->SBtOpenStrimFile->Enabled = TRUE;
   Form_Kod->SBtSaveStrimFile->Enabled = TRUE;
   Form_Kod->SBtScrStrim->Enabled = TRUE;
   Form_Kod->SBtDeScrStrim->Enabled = TRUE;
   ProcessNotKill = FALSE;
   _endthread();
}
void __fastcall TForm_Kod::SBtDeScrStrimClick(TObject *Sender)
{
   SBtOpenStrimFile->Enabled = FALSE;
   SBtSaveStrimFile->Enabled = FALSE;
   SBtScrStrim->Enabled = FALSE;
   SBtDeScrStrim->Enabled = FALSE;
   ProcessNotKill = TRUE;
   _beginthread(DeScrambl, 0, NULL) ;
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::N2Click(TObject *Sender)
{
	Application->CreateForm(__classid(TFCalc), &FCalc);
	FCalc->ShowModal();
	FCalc->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::N5Click(TObject *Sender)
{
	Application->CreateForm(__classid(TFAbout), &FAbout);
	FAbout->ShowModal();
	FAbout->Free();
}
//---------------------------------------------------------------------------
void __fastcall TForm_Kod::N4Click(TObject *Sender)
{
	Application->HelpContext(0);
}
//---------------------------------------------------------------------------
Соседние файлы в папке Source