// Im Folgenden wird durch Erweiterung des Projekt-Quelltextes eine sehr
// einfache Art und Weise gezeigt, wie man sein Programm mit einem Passwort
// schützen kann. Damit man das Passwort nicht in der fertigen EXE ausspähen
// kann, wurde einfach hinter jedem Buchstaben ein weiterer Buchstabe
// eingeschoben. So wurde im Beispiel das Passwort
'mypassword' zu
//
'mÜy6p#a+ses?w*o@r8dx'. Die Funktion "pword" löst das wieder auf. Wer größere
// Sicherheit braucht, muss natürlich auch einen höheren Aufwand betreiben.

// Getestet mit D4 unter NT

program Project1; 
 
uses 
  Forms,     stdctrls, dialogs, 
  Unit1 in 'Unit1.pas' {Form1}; 
 
type 
  TDummy = class(TForm) 
  protected 
    procedure MyKeyPress(Sender: TObject; var Key: Char); 
  end; 
 
var 
  pwForm: TForm; 
  dummy: TDummy; 
  pwEdit: TEdit; 
  pw: string = 'mÜy6p#a+ses?w*o@r8dx'; 
  ok: boolean; 
 
const 
  rand = 12; 
 
{$R *.RES} 
 
procedure TDummy.MyKeyPress(Sender: TObject; var Key: Char); 
begin 
  if Key = #13 then pwForm.close; 
end; 
 
function pword: string; 
var 
  x: integer; 
begin 
  result := ''; 
  for x := 1 to length(pw) do 
    if odd(x) then result := result + pw[x]; 
end; 
 
begin 
  pwForm := TForm.create(Application); 
  pwForm.Caption := 'Bitte Kennwort eingeben!'; 
  pwForm.Bordericons := [biSystemMenu, biMinimize]; 
  pwEdit := TEdit.create(pwForm); 
  pwEdit.parent := pwForm; 
  pwEdit.Font.Name := 'Wingdings'; 
  pwEdit.PasswordChar := #108; 
  pwEdit.width := 220; 
  pwEdit.left := rand; 
  pwEdit.top := rand; 
  pwEdit.OnKeyPress := dummy.MyKeyPress; 
  pwForm.clientwidth := pwEdit.width + rand * 2; 
  pwForm.clientheight := pwEdit.height + rand * 2; 
  pwForm.Position := poScreenCenter; 
  pwForm.showmodal; 
  ok := pword = pwEdit.Text; 
  pwEdit.free; 
  pwForm.free; 
  if ok then begin 
    //--- der ursprüngliche Quelltext ---- 
    Application.Initialize; 
    Application.CreateForm(TForm1, Form1); 
    Application.Run; 
    // ------------------------------------ 
  end else showmessage('Sorry, falsches Kennwort'); 
 
end.



Zugriffe seit 6.9.2001 auf Delphi-Ecke