Marco Web Center |
Home: Code Repository: Mastering Delphi 5Project PROTECTION
Project StructurePROTECTION.DPRprogram Protection; uses Forms, ProtForm in 'ProtForm.pas' {Form1}, TestClass in 'TestClass.pas'; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. PROTFORM.PASunit ProtForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} uses TestClass; procedure TForm1.Button1Click(Sender: TObject); var Obj: TTest; begin Obj := TTest.Create; Obj.PublicData := 10; // Obj.ProtectedData := 20; //won't compile ShowMessage (Obj.GetValue); Obj.Free; end; type TFake = class (TTest); procedure TForm1.Button2Click(Sender: TObject); var Obj: TTest; begin Obj := TTest.Create; Obj.PublicData := 10; TFake (Obj).ProtectedData := 20; // compiles! ShowMessage (Obj.GetValue); Obj.Free; end; end. TESTCLASS.PASunit TestClass; interface type TTest = class protected ProtectedData: Integer; public PublicData: Integer; function GetValue: string; end; implementation uses SysUtils; function TTest.GetValue: string; begin Result := Format ('Public: %d, Protected: %d', [PublicData, ProtectedData]); end; end. PROTFORM.DFMobject Form1: TForm1 Left = 266 Top = 126 Width = 285 Height = 129 Caption = 'Protection' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 48 Top = 32 Width = 75 Height = 25 Caption = 'Run Test' TabOrder = 0 OnClick = Button1Click end object Button2: TButton Left = 136 Top = 32 Width = 75 Height = 25 Caption = 'Hack' TabOrder = 1 OnClick = Button2Click end end
|
||
© Copyright Marco Cantù, 1995-2020, All rights reserved |