Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Скремблирование / Source / UCSU
.cpp//---------------------------------------------------------------------------
#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