//--------------------------------------------------------------------------- #include #include #include #pragma hdrstop #include "UnitMain.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TFormMain *FormMain; unsigned long ShiftRegister = 1; char *filenameIn; //--------------------------------------------------------------------------- __fastcall TFormMain::TFormMain(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TFormMain::ButInClick(TObject *Sender) { if (OpenDialog1->Execute()) { LabEdInFile->Text=OpenDialog1->FileName; ButOpenInFile->Enabled=true; } else { ShowMessage("Ошибка при открытии файла!"); ButOpenInFile->Enabled=false; } } //--------------------------------------------------------------------------- void __fastcall TFormMain::ButOutClick(TObject *Sender) { if (SaveDialog1->Execute()) { LabEdOutFile->Text=SaveDialog1->FileName; ButOpenOutFile->Enabled=true; } else { ShowMessage("Ошибка при открытии файла!"); ButOpenOutFile->Enabled=false; } } //--------------------------------------------------------------------------- /* int LFSR(TMemo *MemoPolinom) { ShiftRegister = ( ( ( ( ShiftRegister >> 31) ^ ( ShiftRegister >> 6) ^ ( ShiftRegister >> 4) ^ ( ShiftRegister >> 2) ^ ( ShiftRegister >> 1) ^ ( ShiftRegister ) ) & 0x00000001 ) << 31) | ( ShiftRegister >> 1) ; return ShiftRegister & 0x00000001 ; } */ int LFSR(TMemo *MemoPolinom) { int i=0; unsigned long uL = StrToInt(MemoPolinom->Lines->Strings[i]); for (int i = 0; i < MemoPolinom->Lines->Count-1; i++) { uL ^= (ShiftRegister >> StrToInt(MemoPolinom->Lines->Strings[i])); } uL &= 0x00000001; uL <<= StrToInt(MemoPolinom->Lines->Strings[0]); uL |= (ShiftRegister >> 1); ShiftRegister = uL; return ShiftRegister & 0x00000001 ; } void __fastcall TFormMain::Button1Click(TObject *Sender) { unsigned char ch; FILE *INfile, *OUTfile; filenameIn=OpenDialog1->FileName.c_str(); char *filenameOut=SaveDialog1->FileName.c_str(); //if (OpenDialog1->Execute()) INfile=fopen(filenameIn, "r"); //if (SaveDialog1->Execute()) OUTfile=fopen(filenameOut, "w"); ShiftRegister=StrToInt(LabEdInitial->Text); unsigned char byte = 0; while (!feof(INfile)) { if (fread(&ch,sizeof(unsigned char),1,INfile)) { for(int i = 0; i < 8; i++) { byte |= (unsigned char)LFSR(MemoPolinom); byte <<= 1; } byte ^= ch; int count=fwrite(&byte,sizeof(unsigned char),1,OUTfile); //Memo1->Lines->Add(byte); } } fclose(INfile); fclose(OUTfile); } //--------------------------------------------------------------------------- void __fastcall TFormMain::ButtClearClick(TObject *Sender) { LabEdInFile->Text=""; LabEdOutFile->Text=""; LabEdInitial->Text=""; MemoPolinom->Clear(); ButOpenInFile->Enabled=false; ButOpenOutFile->Enabled=false; //Memo1->Clear(); //Memo3->Clear(); } //--------------------------------------------------------------------------- void __fastcall TFormMain::ButOpenInFileClick(TObject *Sender) { ShellExecute(NULL, "open", OpenDialog1->FileName.c_str(), 0, 0, SW_SHOWNORMAL); } //--------------------------------------------------------------------------- void __fastcall TFormMain::ButOpenOutFileClick(TObject *Sender) { ShellExecute(NULL, "open", SaveDialog1->FileName.c_str(), 0, 0, SW_SHOWNORMAL); } //---------------------------------------------------------------------------