![]() |
In Schleife Passwörter erzeugen
Hallo Leute,
ich sitze nur seit 2 Stunden und suche nach dem Grund ... und finde keinen. Ich habe eine Testfunktion geschrieben, um die Verschlüsselung von Passwörtern in meinem Programm zu testen. Die Funktion erstellt automatisch neue Passwörter, speichert diese verschlüsselt in der DB (auch schon ohne Speichern versucht) und liest sie wieder ein. Mein Problem ist nun, dass in der for-Schleife aus irgendeinem Grund keine neuen Passworte gebildet werden. Wenn ich die Passwörter in eine Datei schreibe, unterscheiden sich nur die ersten zwei Zeilen. Die letzten 48 Vergleiche finden meist mit dem gleichen Passwort statt. Wieso bloß? Ach ja, wenn ich an irgendeiner Stelle in der Schleife eine MessageBox anzeige, klappt es wie gewünscht. Ich peile nicht warum. Ich danke schon im Voraus für Eure Hinweise. Niels
Code:
Die aufgerufene Procedure hat folgenden Funktionskopf:
procedure TFLogin.Button3Click(Sender: TObject);
var TestPW, Doppel : String; i:Integer; dat : TextFile; begin AssignFile(dat,'C:\Fehlerhafte.txt'); rewrite(dat); randomize; for i := 1 to 50 do begin TestPW := ''; while Length(TestPW) < 26 do TestPW := TestPW + char( Random(210)+30 ); write(dat,inttoStr(i)+'-'+TestPW + '->'); saveBenutzerPW('TestUser',TestPW); doppel := getNutzerPW('TestUser'); write(dat,doppel); if Doppel = TestPW then writeln(dat,'*OK*') else writeln(dat,'*--*'); end; closefile(dat); inpName.Text := 'Fertig'; end;
Code:
und dürfte ja wohl keinen Einfuss auf den Wert der lokalen Variablen TestPW haben – oder? :gruebel:
procedure saveBenutzerPW(BenutzerName, Kennwort :String);
|
Re: In Schleife Passwörter erzeugen
Ich peil deinen code auch nicht, könntest du ein paar Kommentare reinmachen oder getNutzerPW und saveNutzerPW auch noch Zeigen?
|
Re: In Schleife Passwörter erzeugen
Hi Dax,
ich hatte nicht gedacht, das die paar Zeilen SO unübersichtlich sein könnten. Nun denn ... Ach ja, der Code in der Procedure kann keinen Einfluss haben.
Code:
Deshalb habe ich ihn nicht gezeigt.
procedure saveBenutzerPW(BenutzerName, Kennwort :String);
Niels
Code:
procedure TFLogin.Button3Click(Sender: TObject);
var TestPW, Doppel : String; i:Integer; dat : TextFile; begin // Öffnen eine Textdatei AssignFile(dat,'C:\Fehlerhafte.txt'); rewrite(dat); // Schleife erzeugt 50 Passwörter randomize; for i := 1 to 50 do begin // Erzeugen eines Passwortes TestPW := ''; while Length(TestPW) < 26 do TestPW := TestPW + char( Random(210)+30 ); // Schreiben des Passwort in Datei und in DB write(dat,inttoStr(i)+'-'+TestPW + '->'); saveBenutzerPW('TestUser',TestPW); // Lesen des Passwortes aus DB und schreiben in Datei doppel := getNutzerPW('TestUser'); write(dat,doppel); // Vergleich, ob beide gleich sind if Doppel = TestPW then writeln(dat,'*OK*') else writeln(dat,'*--*'); end; // Datei schließen closefile(dat); inpName.Text := 'Fertig'; end; |
Re: In Schleife Passwörter erzeugen
du solltest den fehler einkreisen, d.h. eine zeile nach der anderen auskommentieren, bis es funzt, oder gar nichts mehr tut, dann hast du schon mal die zeile, in der es hakt :wink:
denn ich glaube das du am ende dieses
Delphi-Quellcode:
weglassen kannst, da es wahrscheinlich nix damit zutun hat
if doppel=Passwd ...
|
Re: In Schleife Passwörter erzeugen
ich hab zum testen mal den ganzen schnickschnack, den du für deine verwendung brauchst, rausgenommen, hatte also nur noch folgenden code
Code:
und siehe da, es funktioniert :)procedure TForm1.Button1Click(Sender: TObject); var TestPW, Doppel : String; i:Integer; dat : TextFile; begin AssignFile(dat,'C:\Fehlerhafte.txt'); rewrite(dat); randomize; for i := 1 to 7 do begin TestPW := ''; while Length(TestPW) < 26 do TestPW := TestPW + char( Random(210)+30 ); write(dat,inttoStr(i)+'-'+TestPW + '->'); end; closefile(dat); end; meine 'Fehlerhafte.txt' sah wie folgt aus :
Code:
also denk ich mal, liegt der fehler irgendwo bei deinen ganzen vergleichen mit dem 'soll'-pw oder so ..1-’KV íê0tyµ²¸R')b}`äÈÂ#¶/,é-> 2--Ìb°Q°é%¡7¡^Åá´!K±¹~,:¹8-> 3-,HÖ6aÞvÄy½Œak«ÄÉá9ĆN·nŸK-> 4-T€—áèLq:—²cƒ:ÄÒ»6©Õˆ×j½¼Å-> 5-"-½D¾’^H-’²Ö‚¿o ¿wÎeçu5Ó¤.-> 6-®ØqŸ›Nyä˜ÆÊY"N·„6iª,Jo×7¶-> 7-0kRš|tLKÔ¦UŒÕÛ5³SZÄ\.\Pq*-> |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz