Autor Beitrag
TheNeon
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Mi 01.08.07 13:00 
Hallo zusammen,

ich habe sicherlich nach den faöschen Wörtern gesucht, daher nix gefunden .... also hier meine Problemschilderung:

Ich habe mein Programm fertig und möchte jetzt jedoch noch VOR dem eigentlichen Programmstart eine Passwort-Abfrage machen. Dazu habe ich bereits ein zweites Formular erstellt, doch schaffe ich es einfach nicht, dass beim richtigen Passwort das Formular mit der Abfrage komplett verschwindet und das Hauptprogramm gestartet wird. Ebenso wenig funktioniert das reibungslose Schließen bei falscher Eingabe.

Kann wer helfen? user defined image



Gruß
TheNeon

_________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mi 01.08.07 13:07 
Zeig mal deinen Code den du bis jetzt hast.
TheNeon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Mi 01.08.07 13:22 
das was ich bisher habe ist eigentlich peinlich, da ich keine Ahnung habe, wie ich das realisieren kann, was ich will:

PROJEKT
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
program Schwupp;

uses
  Forms,
  Main in 'Main.pas' {F_Main},
  Passwortabfrage in 'Passwortabfrage.pas' {F_Passwortabfrage};

{$R *.res}

begin
  Application.Initialize;
  Application.Title := 'Schwupp';
  Application.CreateForm(TF_Main, F_Main);
  Application.CreateForm(TF_Passwortabfrage, F_Passwortabfrage);
  Application.Run;
end.


PASSWORTABFRAGE
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
var
  F_Passwortabfrage: TF_Passwortabfrage;

implementation

uses
  Main;

{$R *.dfm}

procedure TF_Passwortabfrage.Button_BestaetigenClick(Sender: TObject);
begin
  if EDIT_Passwort.Text <> 'passwort' then begin
    Close;
  end;
end;

procedure TF_Passwortabfrage.Button_AbbrechenClick(Sender: TObject);
begin
  Close;
end;

procedure TF_Passwortabfrage.EDIT_PasswortKeyUp(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if Key = VK_Return then begin
    Button_BestaetigenClick(nil);
  end;
  if Key = VK_ESCAPE then begin
    Button_AbbrechenClick(nil);
  end;
end;

end.


MAIN
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TF_Main.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  F_Passwortabfrage := TF_Passwortabfrage.Create(F_Main);
  try
    F_Passwortabfrage.ShowModal;
  finally
    F_Passwortabfrage.Free;
  end;

[...]



Was mir praktisch gesehen fehlt ist, dass ist von der Passwortabfrage praktisch Rückmeldungen kriege ... oder?

Bin an einem Punkt wo jegliche Versuche nix gebracht haben :( ... ist bestimmt aber nicht so schwer user defined image

_________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
chrisw
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 439
Erhaltene Danke: 3

W2K
D7
BeitragVerfasst: Mi 01.08.07 13:24 
Du könntest im Projectcode (Project/View Source) das Programmform in Abhängigket des "Passwort-Form" "createn" !
So ähnlich:
Bsp:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
uses ....,Controls,


{$R *.res}
begin
  Application.Initialize;
  Application.CreateForm(TPasswortForm, PasswortForm);
  case PasswortForm.ShowModal of 
    mrOK : begin  //Passwort richtig
             PasswortForm.Free;
             Application.CreateForm(TProgramForm,ProgramForm);
           end;
    mrCancel : PasswortForm.Free; //Passwort falsch / Programm wird beendet
  end;
  Application.Run;
end;

_________________
Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
TheNeon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Mi 01.08.07 13:43 
Okay, soweit verstehe ich es. Was ich nur nicht hinkriege ist das Ergebnis abhängig vom Passwort zu machen, denn wenn ich nach Passworteingabe "Self.Close" mache, dann wird immer mrCancel ausgelöst user defined image

_________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
Chryzler
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mi 01.08.07 13:56 
Versuch mal statt Self.Close einfach Application.Terminate zu nehmen.
TheNeon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Mi 01.08.07 14:07 
user defined image klappt alles nicht, denn wenn ich es so mache, dann wird beim Abbrechen das Programm trotzdem gestartet und direkt danach terminiert.
Wenn das Passwort richtig ist, wird das Programm gestartet, doch im Vordergrund erscheint wieder die Passwortabfrage.

user defined image

_________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
passiv
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 270

WIN XP Professional
Delphi 7 Enterprise, Java (Eclipse), Python 2.5, Django 1.1
BeitragVerfasst: Mi 01.08.07 14:10 
nimm self.hide und hauptform.show

_________________
Die Probleme, die es in der Welt gibt, sind nicht mit der gleichen Denkweise zu lösen, die sie erzeugt hat.
Albert Einstein
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 01.08.07 15:12 
user profile iconTheNeon hat folgendes geschrieben:
wenn ich nach Passworteingabe "Self.Close" mache, dann wird immer mrCancel ausgelöst
Wer ShowModal benutzt sollte mit dem ModalResult umgehen können. Einfach bei der richtigen Eingabe des Passworts nicht Close; sondern ModalResult := mrOK; benutzen, bei falscher Eingabe mrCancel.
Und dass Application.Terminate nicht die Hauptform anzeigt sondern das Programm schließt, ist irgendwie ... klar.
Vielleicht wär dieser Code in der Projektdatei besser...:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
Uses
    Forms,
    Unit1 In 'Unit1.pas' {Form1}//<--Hauptform
    Unit2 In 'Unit2.pas' {Form2}//<--Passwortform
    Controls; //Für mrOK. Alternativ mrOK mit 1 ersetzen.


Begin
    Application.Initialize;
    Application.CreateForm(TForm2, Form2);
    If Form2.ShowModal = mrOK Then
    Begin
        Form2.Free;
        Application.CreateForm(TForm1, Form1);

        Form1.Show;
        Application.Run;
    End
    Else
        Application.Terminate;
End.

Bevor das hier in eine Diskusion über Sicherheit ausartet: Ich weiß, dass man so gut wie überhaupt keine Sicherheit vor Crackern erreichen kann. Man kann z.B. einfach den jump der if-Abfrage von jnz in jz oder ähnliches ändern und schwupps erhalte ich Zugriff, sobald ich das *falsche* passwort eingebe, anstatt umgekehrt. Aber darum gehts hier ja nicht ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
TheNeon Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 408

Windows
VS2010 C#
BeitragVerfasst: Mi 01.08.07 16:28 
user defined image

Danke, so klappt es. Wusste nicht, dass man mit ModalResult was zurückgeben kann - ist ja genau das was ich suchte.
Das mit dem Terminate hast du aber falsch verstanden ;)

Bzgl. der Sicherheit reicht es mir, soll nur eine kleine Sicherheit sein :)

user defined image

_________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein