Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bei Login auf Zugriffsverletzung reagieren ... (https://www.delphipraxis.net/86464-bei-login-auf-zugriffsverletzung-reagieren.html)

LOMBI 14. Feb 2007 14:29


Bei Login auf Zugriffsverletzung reagieren ...
 
Hallo,

Delphi-Quellcode:
procedure TFormStartseite.BtnAnmeldenClick(Sender: TObject);
...
begin
  Ini := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'p.ini');
  Key := Ini.ReadString('User', EditBenutzer.Text, '');
  if (Key = MD5_Hash2String((HashForString(EditBenutzer.Text + EditKennwort.Text)))) AND (Key <> '') then
  begin
    ShowMessage ('Sie sind angemeldet!')          
    end else
    ShowMessage ('Benutzername und/oder Kennwort falsch!');
    EditBenutzer.SetFocus;
    EditBenutzer.Text := '';
    EditKennwort.Text := '';
Problem:

Bei BtnAnmeldenClick und leeren Feldern EditBenutzer + EditKennwort kommt es zu einer Zugriffsverletzung. Wie läßt sich bitte diese Meldung vermeiden?

Delphi-Quellcode:
...
if (EditBenutzer.Text = '') Or (EditKennwort.Text = '') then
ShowMessage('Bitte anmelden');
Exit;
EditBenutzer.SetFocus;
Hab' bereits versucht, diesen Code einzuflicken, aber das funktionierte leider nicht.

Gruß
Lombi

halinchen 14. Feb 2007 14:42

Re: Bei Login auf Zugriffsverletzung reagieren ...
 
Vielleicht so?

Delphi-Quellcode:
try...except...end;
Delphi-Quellcode:
try
if (Key = MD5_Hash2String((HashForString(EditBenutzer.Text + EditKennwort.Text)))) AND (Key <> '') then
  begin
    ShowMessage ('Sie sind angemeldet!')          
    end else
    ShowMessage ('Benutzername und/oder Kennwort falsch!');
    EditBenutzer.SetFocus;
    EditBenutzer.Text := '';
    EditKennwort.Text := '';
   ...
   end;
except
//was tun bei Fehler?
end;

LOMBI 14. Feb 2007 16:07

Re: Bei Login auf Zugriffsverletzung reagieren ...
 
Hallo halinchen,

danke für die Antwort. Deinen Vorschlag habe ich umgesetzt.
Die Meldung tritt leider immer noch auf!

halinchen 14. Feb 2007 16:10

Re: Bei Login auf Zugriffsverletzung reagieren ...
 
Du kannst mal das Programm Schritt-für-Schritt ausführen und sagen an welcher Stelle es hapert. (Kann sein das das try wo anders hin muss).

Am besten setzt du einen Breakpoint am Anfang der Prozedur und drückst dann F7 (oder wars F8 :oops: )
bis ein der Fehler kommt.

hoika 14. Feb 2007 16:21

Re: Bei Login auf Zugriffsverletzung reagieren ...
 
Hallo,

Delphi-Quellcode:
if (EditBenutzer.Text = '') or
   (EditKennwort.Text = '') then
begin
  ShowMessage('Bitte anmelden');
  EditBenutzer.SetFocus;
  Exit;
end;
Bei deinem Code fehlt überall ein

begin
end

Und er führt nur den 1. Befehl aus (auch bei "Benutzername falsch")

Heiko

LOMBI 14. Feb 2007 19:21

Re: Bei Login auf Zugriffsverletzung reagieren ...
 
Hallo halinchen/Heiko,

die Zugriffsverletzung bezieht sich auf die Verschlüsselung.
Wenn die beiden Editfelder leer bleiben, kann weder Benutzer noch
Kennwort in die .ini geschrieben werden.

Delphi-Quellcode:
...
try
  if (myKey = MD5_Hash2String((HashForString(EditBenutzer.Text + EditKennwort.Text)))) AND (myKey <> '') then
  begin
    ShowMessage ('Sie sind angemeldet!')
    end else
    begin
    ShowMessage ('Benutzername und/oder Kennwort falsch!');
    EditBenutzer.SetFocus;
    EditBenutzer.Text := '';
    EditKennwort.Text := '';
    end;
    except
   if (EditBenutzer.Text = '') or
   (EditKennwort.Text = '') then
begin
  ShowMessage('Bitte anmelden');
  EditBenutzer.SetFocus;
  Exit
  end;
end;

hoika 15. Feb 2007 06:58

Re: Bei Login auf Zugriffsverletzung reagieren ...
 
Hallo,

dann musst du dass halt vor dem Hashbilden prüfen
und nicht sofort die Edit.Text an die Methode übergeben.


Heiko

marabu 15. Feb 2007 07:46

Re: Bei Login auf Zugriffsverletzung reagieren ...
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen Lombi,

manchmal muss man aufpassen, in welcher Reihenfolge man die Dinge erledigt. Besser finde ich in deinem Fall, wenn man den Button gar nicht drücken kann, bevor man sinnvolle Eingaben gemacht hat.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz