Autor |
Beitrag |
TheNeon
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: 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?
Gruß
TheNeon
_________________ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Mi 01.08.07 13:07
Zeig mal deinen Code den du bis jetzt hast.
|
|
TheNeon 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: 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
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' , Passwortabfrage in 'Passwortabfrage.pas' ;
{$R *.res}
begin Application.Initialize; Application.Title := 'Schwupp'; Application.CreateForm(TF_Main, F_Main); Application.CreateForm(TF_Passwortabfrage, F_Passwortabfrage); Application.Run; end. |
PASSWORTABFRAGE
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
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 
_________________ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
|
|
chrisw
      
Beiträge: 439
Erhaltene Danke: 3
W2K
D7
|
Verfasst: 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: 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 PasswortForm.Free; Application.CreateForm(TProgramForm,ProgramForm); end; mrCancel : PasswortForm.Free; end; Application.Run; end; |
_________________ Man sollte keine Dummheit zweimal begehen, die Auswahl ist schließlich groß genug.
|
|
TheNeon 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: 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 
_________________ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
|
|
Chryzler
      
Beiträge: 1097
Erhaltene Danke: 2
|
Verfasst: Mi 01.08.07 13:56
Versuch mal statt Self.Close einfach Application.Terminate zu nehmen.
|
|
TheNeon 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: Mi 01.08.07 14:07
 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.

_________________ Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
(c) Albert Einstein
|
|
passiv
      
Beiträge: 270
WIN XP Professional
Delphi 7 Enterprise, Java (Eclipse), Python 2.5, Django 1.1
|
Verfasst: 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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mi 01.08.07 15:12
TheNeon 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...:
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' , Unit2 In 'Unit2.pas' , Controls;
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 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: Mi 01.08.07 16:28
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

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