Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Скремблирование / Source / FrmCalc
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include"FrmCalc.h"
#include"stdlib.h"
#include"UCSU.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TFCalc *FCalc;
//---------------------------------------------------------------------------
__fastcall TFCalc::TFCalc(TComponent* Owner)
: TForm(Owner)
{
EDec->OnKeyPress = DecKeyPress;
EHex->OnKeyPress = HexKeyPress;
EBin->OnKeyPress = BinKeyPress;
}
//---------------------------------------------------------------------------
void __fastcall TFCalc::BtCloseClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TFCalc::DecKeyPress(TObject *Sender, char &Key)
{
Set <char, 0, 255> Dig;
Dig << '0' << '1' << '2' << '3' << '4';
Dig << '5' << '6' << '7' << '8' << '9' << VK_BACK;
if (!Dig.Contains(Key))
{
Key = 0;
Beep();
}
}
void __fastcall TFCalc::HexKeyPress(TObject *Sender, char &Key)
{
Set <char, 0, 255> Dig;
Dig << '0' << '1' << '2' << '3' << '4';
Dig << '5' << '6' << '7' << '8' << '9';
Dig << 'A' << 'B' << 'C' << 'D' << 'E' << 'F';
Dig << 'a' << 'b' << 'c' << 'd' << 'e' << 'f' << VK_BACK;
if (!Dig.Contains(Key))
{
Key = 0;
Beep();
}
}
void __fastcall TFCalc::BinKeyPress(TObject *Sender, char &Key)
{
Set <char, 0, 255> Dig;
Dig << '0' << '1' << VK_BACK;
if (!Dig.Contains(Key))
{
Key = 0;
Beep();
}
}
AnsiString DecToHex(AnsiString str)
{
AnsiString result;
char *hex_digits = "0123456789ABCDEF";
result = "";
DWORD ci, cj, k, remainder, dividend;
while(str.Length() > 0)
{
remainder = 0;
for(cj = 1; cj <= str.Length(); cj++)
{
k = (BYTE)str[cj]-48;
dividend = 10*remainder+k;
remainder = dividend%16;
str[cj] = hex_digits[int(dividend/16.0)];
}
str.Delete(1, 1);
result += hex_digits[remainder];
}
result = strrev(result.c_str());
while(result.Length() > 1 && result[1] == '0')
result.Delete(1, 1);
return result;
}
AnsiString HexToBin(AnsiString str)
{
AnsiString result = "";
DWORD ci;
for(ci = 1; ci <= str.Length(); ci++)
switch(str[ci])
{
case '0': result += "0000"; break;
case '1': result += "0001"; break;
case '2': result += "0010"; break;
case '3': result += "0011"; break;
case '4': result += "0100"; break;
case '5': result += "0101"; break;
case '6': result += "0110"; break;
case '7': result += "0111"; break;
case '8': result += "1000"; break;
case '9': result += "1001"; break;
case 'A':
case 'a': result += "1010"; break;
case 'B':
case 'b': result += "1011"; break;
case 'C':
case 'c': result += "1100"; break;
case 'D':
case 'd': result += "1101"; break;
case 'E':
case 'e': result += "1110"; break;
case 'F':
case 'f': result += "1111"; break;
}
while(result.Length() > 1 && result[1] == '0')
result.Delete(1, 1);
return result;
}
void __fastcall TFCalc::EDecChange(TObject *Sender)
{
EHex->Text = DecToHex(EDec->Text);
EBin->Text = HexToBin(EHex->Text);
EScrm->Text = Form_Kod->Scrembler(EBin->Text,
Form_Kod->RadioGroup1->ItemIndex);
}
//---------------------------------------------------------------------------
Соседние файлы в папке Source