Autor |
Beitrag |
oneP
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Di 18.08.09 00:52
Hallo!
ich möchte, wie der Titel schon sagt, dass vor dem Start meines Programms ein kleines kennwortfenster erscheint.
Ich habe mir das so vorgestellt (ein ganz einfaches Beispiel:)
Es gibt zwei units (Hauptfenster und Passwortfenster)
Beim Start des Programms soll das Passwortfenster vom Hauptf. aufgerufen werden:
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:
| unit Hauptfenster;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private public end;
var Form1: TForm1;
implementation
uses Passwortfenster;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); begin Form2.showmodal; end;
end. |
wenn man diesen Aufruf-Befehl unter FormCreate eingibt, wie ich das hier gemacht hab, dann erscheint nach dem Start des Programms aber ein fehler. ('Fehler in Adresse....')
Was ist Falsch daran?
außerdem will ich das so machen dass am Anfang nur das Kennwortfenster erscheint, und erst nach der Eingabe des Kennworts das 'Hauptfenster' also das eigentliche Programm gestartet wird.
Wie stell ich das an?
Kann mir da jemand helfen? Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Di 18.08.2009 um 00:59
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 18.08.09 01:15
warum nimmst du nicht das passwort-Form als hauptform, das dann einfach dein eigentliches Programm aufruft wenn das Passwort richtig eingegeben wurde?
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Di 18.08.09 01:30
dann hab ich aber wieder das Problem dass ich, nachdem das Hauptfenster geöffnet wurde, das Kennwortfenster nicht schließen kann (zB durch Form1.close) weil dann das ganze Programm geschlossen wird.
Oder geht das irgendwie?
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 18.08.09 03:51
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
delphijanka
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Di 18.08.09 14:53
Kreiert man eine Passwort-Form bei der OnShow der MainForm (Öffnen mit ShowModal!), so wird die MainForm erst nicht angezeigt, jedoch die Password-Form. Aus der Password-Form kann man jedoch in die MainForm zugreifen, um die Benutzereingaben (Username, Password) auf Richtigkeit zu prüfen. Mit Schliessen des Passwort-Fensters einfach Close; schreiben, mit Schliessen der gesamten Anwendung MainForm.Close;
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Di 18.08.09 16:50
Der Vorschlag mit Hide ist alleine deswegen schlecht da das Formular dann unsichtbar und ungenutzt in der gegend rumfliegt ^^.
Der ansatz von delphijanka hört sich schon viel besser an. Je nach erzeugung des Formulars auch wieder auf die Freigabe achten...
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 18.08.09 20:07
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Di 18.08.09 22:06
Frühlingsrolle er gibt aber nicht an wie lange die Anwendung läuft. Und es ist einfach unsauber und wenn man das öfter in einer größeren Anwendung macht dann wird die Problematik noch offensichtlicher. 
|
|
Narses
      

Beiträge: 10183
Erhaltene Danke: 1256
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Di 18.08.09 22:50
Moin!
thepaine91 hat folgendes geschrieben : | Frühlingsrolle er gibt aber nicht an wie lange die Anwendung läuft. Und es ist einfach unsauber und wenn man das öfter in einer größeren Anwendung macht dann wird die Problematik noch offensichtlicher.  |
Ich schmeiße mal das Wort "Verhältnismäßigkeit" in die Diskussion. Was schätzt du denn, wieviele verschiedene, gleichzeitig geöffnete aber versteckte Passwort-Dialoge er so in dieser Anwendung verwenden wird?
cu
Narses
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 18.08.09 23:19
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mi 19.08.09 01:08
Der tipp von delphijanka war eigentlich das wonach ich gesucht hab. Das OnShow Ereignis öffnet das Passwort fenster als 'Nebenfenster', genauso wie ich das gewollt hab. Nur leider hab ich das OnShow Ereignis vorher nicht entdeckt...
und zum Thema Passwort möcht ich noch fragen ob es eine sichere Möglichkeit gibt als es in einer ini Datei zu speichern? Vielleicht so dass man es gar nicht in einer datei speichern muss??
und wie lass ich das Passwort bei der Eingabe nur als Punkte erscheinen?
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 19.08.09 02:01
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Mi 19.08.09 08:54
Narses da hast du schon recht nur wenn man so denkt ist immer die Frage wo die grenze ist. OT: Wenn man ein Loli klaut bleibt es auch Diebstahl.
Ich finde man sollte das von Anfang an einhalten. Aber nur meine meinung daher beuge ich mich jetzt.
Onep: du könntest es in der registry speichern u.a. und dazu 100* md5 verschlüsseln. 
|
|
delphijanka
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Mi 19.08.09 09:27
@OneP
Bitte beachten: dein Anmelde-Fenster darf nicht einfach so mit Alt-F4 oder ähnlichem geschlossen und damit der Anmeldevorgang umgegangen werden. Zur Lösung des problems einfach eine boolean-Variable in der Anmelde-Unit deklarieren, die, je nach Status, entweder nur Anmeldefenster schleisst, oder das gesamte Programm. Erfolgreicher Anmeldevorgang würde bedeuten, den Wert dieser Variable zu ändern.
|
|
delphijanka
      
Beiträge: 151
WinXP
D 2009 Arc., Java, C
|
Verfasst: Mi 19.08.09 09:37
@OneP schreibt:
"und zum Thema Passwort möcht ich noch fragen ob es eine sichere Möglichkeit gibt als es in einer ini Datei zu speichern? Vielleicht so dass man es gar nicht in einer datei speichern muss??"
Normalerweise werden die pw's encodiert und "irgendwo" abgelegt. Das Encode- sowie Decodeverfahren sind direkt in das Programm integriert.
|
|
oneP 
      
Beiträge: 71
Win XP Professional
Turbo Delphi 2006
|
Verfasst: Mi 19.08.09 11:30
Frühlingsrolle danke für den Tipp hab ich gleich gemacht. Mit Punkt meinte ich den da: ••••
thepaine91 hat folgendes geschrieben : |
Onep: du könntest es in der registry speichern u.a. und dazu 100* md5 verschlüsseln.  |
??? Kapier ich nicht....  also dieses Verschlüsseln
delphijanka hat folgendes geschrieben : | @OneP
Bitte beachten: dein Anmelde-Fenster darf nicht einfach so mit Alt-F4 oder ähnlichem geschlossen und damit der Anmeldevorgang umgegangen werden. Zur Lösung des problems einfach eine boolean-Variable in der Anmelde-Unit deklarieren, die, je nach Status, entweder nur Anmeldefenster schleisst, oder das gesamte Programm. Erfolgreicher Anmeldevorgang würde bedeuten, den Wert dieser Variable zu ändern. |
danke auch. habs jetzt auch so gemacht
delphijanka hat folgendes geschrieben : | @OneP schreibt:
Normalerweise werden die pw's encodiert und "irgendwo" abgelegt. Das Encode- sowie Decodeverfahren sind direkt in das Programm integriert. |
Hmm.. das is mir aber zu umständlich  . Ich mache das Programm nur so als Übung...
ALSO DANKE NOCHMAL AN ALLE
|
|
Gewuerzgurke
      
Beiträge: 152
Win XP
Lazarus
|
Verfasst: Di 25.08.09 15:52
Wobei anzumerken ist, dass man nicht das Passwort verschlüsseln sollte sondern dieses selber als Schlüssel für einen zufällig erzeugten Ausdruck verwenden sollte. Denn so kennt das Programm das Passwort garnicht, sondern kann nur prüfen, ob der zufällig erzeugte Ausdruck korrekt entschlüsselt wurde.
Ich suche schon seit Tagen nach vernünftigen Tutorials und Quellcode für solche Verschlüsselungen wie z.B. AES. Hat jemand ein Paar Tipps?
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 25.08.09 16:27
Das DEC von Hagen (username: negaH) aus der Delphi-Praxis wäre zum beispiel so ein Quellcode. Da sind unter anderem AES, MD5 und weitere dabei. Jedoch sind diese Units nicht kommerziell nutzbar, da von der lizenz her verboten.
lg elundril
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
thepaine91
      
Beiträge: 763
Erhaltene Danke: 27
Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
|
Verfasst: Di 25.08.09 17:00
Ich muss mich korrigieren.
md5 ist lediglich ein Hashwert nicht zu verwechseln mit einer Verschlüsselung.
Wenn du natürlich intern im Programm den Hashwert errechnest und den in eine Ini speicherst ist das nicht weiter kompliziert.
Für den Normalen nutzer wird das reichen für jemanden mit genügend Fachkenntnissen nicht.
|
|
ffgorcky
      
Beiträge: 573
WIN XP/2000 & 7Prof (Familie:Win95,Win98)
|
Verfasst: Sa 29.08.09 11:06
Das geht doch auch schon so:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.FormCreate(Sender: TObject); begin if InputBox('Passwortabfrage','Bitte zum Start das erforderliche Passwort eingeben:','')='Hallo' then Form1.Show else Application.Terminate; end; |
|
|