Autor Beitrag
oneP
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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:

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:
unit Hauptfenster;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  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 user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Di 18.08.2009 um 00:59
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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



BeitragVerfasst: Di 18.08.09 03:51 
- Nachträglich durch die Entwickler-Ecke gelöscht -
delphijanka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151

WinXP
D 2009 Arc., Java, C
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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



BeitragVerfasst: Di 18.08.09 20:07 
- Nachträglich durch die Entwickler-Ecke gelöscht -
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Di 18.08.09 22:50 
Moin!

user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:
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? :zwinker:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 18.08.09 23:19 
- Nachträglich durch die Entwickler-Ecke gelöscht -
oneP Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: 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... :D

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



BeitragVerfasst: Mi 19.08.09 02:01 
- Nachträglich durch die Entwickler-Ecke gelöscht -
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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. :P

Onep: du könntest es in der registry speichern u.a. und dazu 100* md5 verschlüsseln. ;)
delphijanka
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151

WinXP
D 2009 Arc., Java, C
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 151

WinXP
D 2009 Arc., Java, C
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 71

Win XP Professional
Turbo Delphi 2006
BeitragVerfasst: Mi 19.08.09 11:30 
Frühlingsrolle danke für den Tipp hab ich gleich gemacht. Mit Punkt meinte ich den da: ••••



user profile iconthepaine91 hat folgendes geschrieben Zum zitierten Posting springen:


Onep: du könntest es in der registry speichern u.a. und dazu 100* md5 verschlüsseln. ;)


??? Kapier ich nicht.... :D also dieses Verschlüsseln



user profile icondelphijanka hat folgendes geschrieben Zum zitierten Posting springen:
@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 :D

user profile icondelphijanka hat folgendes geschrieben Zum zitierten Posting springen:
@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 :D. Ich mache das Programm nur so als Übung...

ALSO DANKE NOCHMAL AN ALLE
Gewuerzgurke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 152

Win XP
Lazarus
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Sa 29.08.09 11:06 
Das geht doch auch schon so:
ausblenden 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;