МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Защита данных от несанкционированного доступа

    RMenuBar: TStreamRec = ( {Запись для работы с потоком, TV}

    ObjType: 2000;

    VmtLink: Ofs(TypeOf(TMenuBar)^);

    Load: @TMenuBar.Load;

    Store: @TMenuBar.Store);

    Type

    {Установка опций криптографии}

    POptions = ^TOptions;

    TOptions = object(TDialog)

    constructor Init;

    end;

    {Объект для работы с текстом}

    PMyStaticText = ^TMyStaticText;

    TMyStaticText = object(TStaticText)

    function GetPalette: PPalette; virtual; {Переопределение палитры}

    end;

    {Объекты для работы с файлами и каталогами}

    PMyFDialog = ^TMyFDialog;

    TMyFDialog = object(TFileDialog)

    function GetPalette: PPalette; virtual;

    end;

    PMyFileDialog = ^TMyFileDialog;

    TMyFileDialog = object(TMyFDialog)

    constructor Init(AWildCard: tWildStr; const ATitle,

    InputName: string; AOptions: Word; HistoryId: Byte);

    end;

    PDirDialog = ^TDirDialog;

    TDirDialog = object(TChDirDialog)

    function GetPalette: PPalette; virtual;

    end;

    PMyChDirDialog = ^TMyChDirDialog;

    TMyChDirDialog = object(TDirDialog)

    constructor Init(AOptions: Word; HistoryId: Word);

    procedure SetUpDialog;

    function Valid(Command: Word): Boolean; virtual;

    end;

    {Установка основного фона программы}

    PMyBackground = ^TMyBackground;

    TMyBackground = object(TBackground)

    Text: TTitleStr;

    constructor Init(var Bounds: TRect; AText: TTitleStr);

    procedure Draw; virtual;

    end;

    PMyDesktop = ^TMyDesktop;

    TMyDesktop = object(TDesktop)

    procedure InitBackground; virtual;

    end;

    {Объект "О Программе"}

    PAboutBox = ^TAboutBox;

    TAboutBox = object(TDialog)

    constructor Init;

    end;

    {Основной объект}

    PMyApp = ^TMyApp;

    TMyApp = object(TApplication)

    constructor Init; {инициализация}

    destructor Done; virtual; {завершение работы}

    procedure HandleEvent(var Event: TEvent); virtual; {обработка

    событий}

    procedure InitMenuBar; virtual; {инициализация меню}

    procedure InitDeskTop; virtual; {инициализация рабочего поля}

    procedure InitStatusLine; virtual; {инициализация строки состояния}

    procedure FileOpen(WildCard: PathStr); {окно для работы с файлами}

    function GetPalette: PPalette; virtual; {изменение стандартной

    палитры}

    end;

    { Русифицированная функция формирования сообщения }

    function MyMessageBoxRect(var R: TRect;

    const Msg: string; Params: pointer;

    AOptions: word): word;

    const

    ButtonName: array[0..3] of string[6] = ('Ага', 'Нека', 'Ага', 'Нека');

    Commands: array[0..3] of Word = (cmYes, cmNo, cmOK, cmCancel);

    Titles: array[0..3] of string[11] =

    ('Предупреждение', 'Ошибка', 'Информация', 'Подтверждение');

    var

    I, X : integer;

    Dialog : PDialog;

    Control: PView;

    S : string;

    begin

    Dialog:= New(PDialog, Init(R, Titles[AOptions and $3]));

    with Dialog^ do

    begin

    Options:= Options or ofCentered;

    R.Assign(3, 2, Size.X - 2, Size.Y - 3);

    FormatStr(S, Msg, Params^);

    Insert(New(PStaticText, Init(R, S)));

    X:= -2;

    R.Assign(0, 0, 10, 2);

    for I:= 0 to 3 do

    if AOptions and ($0100 shl I) <> 0 then

    Inc(X, R.B.X - R.A.X + 2);

    X:= (Size.X - X) shr 1;

    for I:= 0 to 3 do

    if AOptions and ($0100 shl I) <> 0 then

    begin

    Control:= New(PButton, Init(

    R, ButtonName[I], Commands[i], bfNormal));

    Insert(Control);

    Control^.MoveTo(X, Size.Y - 3);

    Inc(X, Control^.Size.X + 2);

    end;

    SelectNext(False);

    end;

    if AOptions and mfInsertInApp = 0 then

    MyMessageBoxRect:= DeskTop^.ExecView(Dialog)

    else

    MyMessageBoxRect:= Application^.ExecView(Dialog);

    Dispose(Dialog, Done);

    end;

    { Русифицированная функция формирования сообщения

    стандартного размера }

    function MyMessageBox(const Msg: String;

    Params: Pointer; AOptions: Word): Word;

    var

    R: TRect;

    begin

    R.Assign(0, 0, 40, 9);

    MyMessageBox:= MyMessageBoxRect(R, Msg, Params, AOptions);

    end;

    function GetCurDir: DirStr;

    var

    CurDir: DirStr;

    begin

    GetDir(0, CurDir);

    if Length(CurDir) > 3 then

    begin

    Inc(CurDir[0]);

    CurDir[Length(CurDir)]:= '\';

    end;

    GetCurDir:= CurDir;

    end;

    {Процедура инициализации окна работы с файлами}

    procedure TMyApp.FileOpen(WildCard: PathStr);

    var

    FileName: FNameStr;

    begin

    FileName:= '*.*';

    if ExecuteDialog(New(PMyFileDialog, Init(

    WildCard, 'Открыть файл', 'Имя', fdOpenButton,

    100)), @FileName) <> cmCancel then FName:=FileName;

    {открыть файл, потом...}

    end;

    {**************************************************************************

    **}

    {*----------============= К Р И П Т О Г Р А Ф И Я ================---------

    -*}

    {**************************************************************************

    **}

    {Шифрование файлов}

    procedure Shifr(InputFileName: string);

    const

    A = 5; {Константы для}

    C = 27; {генератора}

    M = 65536; {псевдослучайных чисел, далее - ПСЧ}

    var

    TempFile : file of byte;

    InpF, OutF : file of word; {файлы на входе и выходе}

    Password, Password1 : string; {переменные для работы с паролями}

    OutputFileName, Exten : string; {переменные имен файлов}

    I, J, K, tmp : byte; {переменные кодирования}

    Temp, SCode, TByte, Code: word;

    Position : LongInt; {переменные данных о процессе}

    NowPos : real;

    TPassword : array [1..255] of word;

    MasByte, Mas, MasEnd, PS: array [1..64] of word; {массивы перестановок}

    T : array [0..64] of word;

    DirInfo, DirInfo1 : SearchRec; {данные о файле}

    begin

    if length(FName) > 3 then {Файл выбран?}

    begin

    {Получить пароль}

    Password := '';

    Password1 := '';

    InputBox('П А Р О Л Ь', ' Введите пароль:', Password, 255);

    InputBox('П А Р О Л Ь', 'Введите пароль еще раз:', Password1, 255);

    if (Password = Password1) and (length(Password)<>0) then

    begin

    {Преобразовать файл}

    FindFirst(InputFileName, AnyFile, DirInfo);

    if DOSError = 0 then

    begin

    if DirInfo.Size mod 2 = 1 then

    begin

    assign(TempFile, InputFileName);

    reset(TempFile);

    while not EOF(TempFile) do read(TempFile, tmp);

    tmp := 255;

    write(TempFile, tmp);

    close(TempFile);

    end;

    {Преобразовать имя файла}

    Position := 0;

    assign(InpF, InputFileName);

    reset(InpF);

    for i := length(InputFileName) downto 1 do

    if InputFileName[i] = '.' then

    begin

    OutputFileName := copy(InputFileName, 1, i) + 'M&A';

    break;

    end;

    assign(OutF, OutputFileName);

    rewrite(OutF);

    for i:= 0 to length(InputFileName) do

    if InputFileName[length(InputFileName) - i] = '.' then

    case i of

    0: Exten := chr(0) + chr(0) + chr(0);

    1: Exten := copy(FName, length(FName)-2, i) + chr(0) +

    chr(0);

    2: Exten := copy(FName, length(FName)-2, i) + chr(0)

    else Exten := copy(FName, length(FName)-2, 3)

    end;

    for i := 1 to 3 do

    begin

    Temp := ord(Exten[i]);

    Write(OutF, Temp);

    end;

    {Начать шифрование}

    k := 1;

    repeat

    begin

    {Считать из исходного файла блок размером 64*word}

    for i:=1 to 64 do

    If EOF(InpF) then MasByte[i] := 0 else Read(InpF,

    MasByte[i]);

    Mas := MasByte;

    T[0] := ord(Password[k]);

    if k < length(Password) then inc(k) else k := 1;

    for i:= 1 to 64 do

    begin

    {Получить текущую позицию процесса}

    NowPos := 100*Position/DirInfo.Size;

    inc(Position, 2);

    if NowPos > 100 then NowPos := 100;

    Str(Round(NowPos):3, Pos);

    if OptInd = 0 then

    begin

    GoToXY(77, 1);

    Write(Pos + '%');

    end;

    {Шифровать с помощью ПСЧ}

    Code:=Mas[i];

    T[i] := (A * T[i-1] + C) mod M;

    Code:=T[i] xor Code;

    Mas[i] := Code;

    end;

    for i:=1 to 8 do { Конечная перестановка }

    for j:=1 to 8 do

    case i of

    1: MasEnd[8*(j-1)+i] := Mas[41-j];

    2: MasEnd[8*(j-1)+i] := Mas[09-j];

    3: MasEnd[8*(j-1)+i] := Mas[49-j];

    4: MasEnd[8*(j-1)+i] := Mas[17-j];

    5: MasEnd[8*(j-1)+i] := Mas[57-j];

    6: MasEnd[8*(j-1)+i] := Mas[25-j];

    7: MasEnd[8*(j-1)+i] := Mas[65-j];

    8: MasEnd[8*(j-1)+i] := Mas[33-j]

    end;

    for i:= 1 to 64 do Write(OutF, MasEnd[i]);

    end;

    until eof(InpF);

    MyMessageBox('Файл '+ InputFileName + ' зашифрован с именем ' +

    OutputFileName, nil, mfInformation+mfOkButton);

    Close(InpF);

    if OptFile = 1 then Erase(InpF);

    Close(OutF);

    end

    else MyMessageBox('Файл '+ InputFileName + ' не существует!',

    nil, mfInformation+mfOkButton);

    end

    else MyMessageBox(' Ошибка ввода пароля!!!', nil,

    mfError+mfOkButton);

    end

    else MyMessageBox(' Файл не выбран!!!', nil,

    mfError+mfOkButton);

    end;

    procedure DeShifr(InputFileName: String);

    const

    A = 5;

    C = 27;

    M = 65536;

    var

    InpF, OutF : file of word;

    Password, OutputFileName : string;

    Password1 : string;

    Exten : string[3];

    SCode, Temp, Ext, TByte, Code: word;

    I, J, K : byte;

    Position : LongInt;

    NowPos : real;

    TPassword : array [1..255] of word;

    MasByte, Mas, MasEnd, PS : array [1..64] of word;

    T : array [0..64] of word;

    DirInfo : SearchRec;

    begin

    if (length(InputFileName) > 3) and

    (copy(InputFileName, length(InputFileName)-2, 3) = 'M&A') then

    begin

    Password := '';

    Password1 := '';

    InputBox('П А Р О Л Ь', ' Введите пароль:', Password, 255);

    InputBox('П А Р О Л Ь', 'Введите пароль еще раз:', Password1, 255);

    if (Password = Password1) and (length(Password)<>0) then

    begin

    FindFirst(InputFileName, AnyFile, DirInfo);

    if DOSError = 0 then

    begin

    Assign(InpF, InputFileName);

    Reset(InpF);

    Position := 0;

    Exten := '';

    for i:= 1 to 3 do

    begin

    Read(InpF, Temp);

    Exten := Exten + chr(Temp);

    end;

    for i := length(InputFileName) downto 1 do

    if InputFileName[i] = '.' then

    begin

    OutputFileName := copy(InputFileName, 1, i) + Exten;

    break;

    end;

    Assign(OutF, OutputFileName);

    Rewrite(OutF);

    for i := 1 to length(Password) do

    TPassword[i]:=ord(Password[i]);

    k := 1;

    repeat

    begin

    for i:=1 to 64 do Read(InpF, MasByte[i]);

    for i:=1 to 8 do { начальная перестановка }

    for j:=1 to 8 do

    case i of

    1: Mas[8*(i-1)+j]:=MasByte[66-8*j];

    2: Mas[8*(i-1)+j]:=MasByte[68-8*j];

    3: Mas[8*(i-1)+j]:=MasByte[70-8*j];

    4: Mas[8*(i-1)+j]:=MasByte[72-8*j];

    5: Mas[8*(i-1)+j]:=MasByte[65-8*j];

    6: Mas[8*(i-1)+j]:=MasByte[67-8*j];

    7: Mas[8*(i-1)+j]:=MasByte[69-8*j];

    8: Mas[8*(i-1)+j]:=MasByte[71-8*j]

    end;

    T[0] := ord(Password[k]);

    if k < length(Password) then inc(k) else k := 1;

    for i:= 1 to 64 do

    begin

    NowPos := 100*Position/DirInfo.Size;

    inc(Position, 2);

    If NowPos > 100 then NowPos := 100;

    Str(Round(NowPos):3, Pos);

    if OptInd = 0 then

    begin

    GoToXY(77, 1);

    Write(Pos + '%');

    end;

    T[i] := (A * T[i-1] + C) mod M;

    Code:=Mas[i];

    Code:=T[i] xor Code;

    Mas[i] := Code;

    end;

    MasEnd := Mas;

    for i := 1 to 64 do Write(OutF, MasEnd[i]);

    end;

    until eof(InpF);

    GotoXY(77, 1);

    write('100%');

    MyMessageBox('Файл '+ InputFileName + ' расшифрован в ' +

    OutputFileName, nil, mfInformation+mfOkButton);

    Close(InpF);

    if OptFile = 1 then Erase(InpF);

    Close(OutF);

    end

    else MyMessageBox('Файл '+ InputFileName + ' не существует!',

    nil, mfInformation+mfOkButton);

    end

    else MyMessageBox(' Ошибка ввода пароля!!!', nil,

    mfError+mfOkButton);

    end

    else MyMessageBox(' Файл не выбран!!!', nil,

    mfError+mfOkButton);

    end;

    {Опции криптографии}

    constructor TOptions.Init;

    var

    R : TRect;

    Q, Q1: PView;

    Butt : TRadioButtons;

    begin

    R.Assign(0, 0, 60, 11);

    inherited Init(R, 'Криптография');

    Options := Options or ofCentered;

    R.Assign(10, 8, 20, 10);

    Insert(New(PButton, Init(R, '~А~га', cmOK, bfDefault)));

    R.Assign(40, 8, 50, 10);

    Insert(New(PButton, Init(R, '~Н~ека', cmCancel, bfNormal)));

    R.Assign(2, 2, 25, 3);

    Insert(New(PLabel, Init(R, 'Исходный файл:', Q)));

    R.Assign(5, 4, 21, 6);

    Q:=New(PRadioButtons, Init(R,

    NewSItem('~Н~е удалять',

    NewSItem('~У~далять', nil))));

    Insert(Q);

    R.Assign(27, 2, 45, 3);

    Insert(New(PLabel, Init(R, 'Индикатор:', Q1)));

    R.Assign(30, 4, 50, 6);

    Q1:=New(PRadioButtons, Init(R,

    NewSItem('~В~ысвечивать',

    NewSItem('~Н~е высвечивать', nil))));

    Insert(Q1);

    end;

    {Изменение пароля на вход в систему}

    procedure Passwords;

    var

    Ps, Ps1: string;

    I : byte;

    tmp : char;

    begin

    Ps := '';

    Ps1 := '';

    InputBox('П А Р О Л Ь', 'Введите пароль:', Ps, 255);

    for i:= 1 to length(Ps) do Ps[i] :=chr(ord(Ps[i]) xor 27);

    if Ps <> Pass then

    begin

    MyMessageBox(' Неверный пароль!!!', nil, mfError+mfOkButton);

    ClrScr;

    writeln('Несанкционированный доступ!');

    Halt;

    end;

    InputBox('И З М Е Н Е Н И Е П А Р О Л Я',

    'Введите новый пароль:', Ps, 255);

    InputBox('И З М Е Н Е Н И Е П А Р О Л Я',

    ' Повторите ввод:', Ps1, 255);

    if (Ps = Ps1) and (Ps <> '') then

    begin

    Assign(FilePass, 'system.res');

    Rewrite(FilePass);

    for i := 1 to length(PS) do

    begin

    tmp := chr(ord(Ps[i]) xor 27);

    Write(FilePass, tmp);

    end;

    Close(FilePass);

    end

    else MyMessageBox(' Ошибка ввода пароля!!!', nil,

    mfError+mfOkButton);

    end;

    {Обработка ошибок}

    procedure CheckExec;

    var

    St: string;

    begin

    Str(DOSError, St);

    case DOSError of

    2: MyMessageBox(' Ошибка DOS № ' +

    Страницы: 1, 2, 3, 4, 5, 6, 7


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.