Entwickler-Ecke

Sonstiges (Delphi) - Random Password ?!


Mr.D3ath - Mi 28.03.07 21:10
Titel: Random Password ?!
Hi ,
Ich habe schon gesucht aber leider nichts gefunden und in den Lern-Kursen oder wie auch immer finde ich auch nichts wie
kann ich es machen das mein programm ein Passwort erstellt mit zahlen und buchstaben in einer gewissen länge ?!


Moderiert von user profile iconGausi: Topic aus Windows API verschoben am Mi 28.03.2007 um 21:28


Robinator - Mi 28.03.07 21:12

Das is jetzt nur für Großbuchstaben, lässt sich aber leicht beliebig erweitern

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
//das musst du einmal aufrufen bevor die Funktion aufgerufen wird
  Randomize;

Function RandomString(ALength : Byte) : String;
  var
    I: Integer;
begin
  Result := '';
  for I := 0 to ALength do
    Result := Result + Chr( 65 + Random(26));
end;


gruss


Mr.D3ath - Mi 28.03.07 21:17

hi nochmals also ich muss sagen das is mir schon eindeutig zu hoch =(


Robinator - Mi 28.03.07 21:25

user profile iconMr.D3ath hat folgendes geschrieben:
hi nochmals also ich muss sagen das is mir schon eindeutig zu hoch =(

könntest du das konkretisieren?


SweeT_C - Mi 28.03.07 21:32

"for to do" ist eine Schleife. Der Inhalt der SChleife wird so oft wiederholt bis "i" die Länge deines Strings erreicht. Das geschieht, indem dem in jedem Durchgang "i" automatisch erhöht wird...
Result ist der Ausgabestring...
Mit jedem Schritt wird Result ein weiterer Buchstabe zugewiesen. zb
'b'
'bm'
'bmu'
usw..
jetzt kommt der Teil, wo ich nciht 100% sicher bin.
Jeder Charakter kann @delphi per Char(nr d. Charakters) aufgerufen werden. Ich nehm mal an, dass die Charakter von 66 bis 91 die Buchstaben auf der Tastatur darstellen, deswegen 65 + eine Zufallszahl zwischen 1 und 26.


So, ich hoffe mal du hast es verstanden und ich hab alles richtig erklärt ;)


Mr.D3ath - Mi 28.03.07 21:42

Hi,


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.Button1Click(Sender: TObject) : String
  var  
    I: Integer;  
begin
Randomize;
Result := '';  
  for I := 0 to ALength do  
    Result := Result + Chr( 65 + Random(26));  
Button1.Caption := Result 
end;

end.


dann müsste es so passen wenn ich es richtig verstanden habe?!


Dragonclaw - Mi 28.03.07 21:44

Jupp das hat SweeT_C schon ganz gut erklärt.

Zu Chr( 65 + Random(26))

Chr() wandelt ein ASCII Code in ein Zeichen um. 65 ist der Code für ein 'A', Random(26) gibt ja Zahlen im bereich von 0 bis 25 wieder. Also kann Char von 65 ('A') bis 90('Z') sein.

Allerdings, will er wahrscheinlich NICHT, dass das Passwort dann als Caption von nem Button ausgebenen wird.
Das würde ich dann eher in ein Edit packen, damit man das Passwort direkt rauskopieren kann


Mr.D3ath - Mi 28.03.07 22:09

Hi,

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var
 I: integer;
begin
  Randomize;
  Result := ''
  for I := 1 to 5 do;
  Result := Result + Chr( 65 + Random(26));
  ShowMessage(Result);


Fehler : Undefinierter Bezeichner Result


Karlson - Mi 28.03.07 22:36

Innerhalb einer Function ist Result eine automatisch anwesende Variable.

Innerhalb einer Procedure gibt es diese nicht, also solltest du es so machen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);  
var  
 I: integer;  
 ResultEx:string;
begin  
  Randomize;  
  Result := '';   
  for I := 1 to 5 do;  
  ResultEx := ResultEx + Chr( 65 + Random(26));  
  ShowMessage(ResultEx); 
end;


Oder aber du nimmst die Function die user profile iconRobinator für dich geschrieben hat:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
Function RandomString(ALength : Byte) : String;  
  var  
    I: Integer;  
begin  
  Result := '';  
  for I := 0 to ALength do  
    Result := Result + Chr( 65 + Random(26));  
end

procedure TForm1.Button1Click(Sender: TObject);  
var passwort : string;
begin
 passwort:=RandomString(5);
 showmessage(Passwort);
end;


Mr.D3ath - Mi 28.03.07 22:45

Hi,
Ich post nun den Code nocheinmal da Karlson sich verschrieben hat !

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
 I: integer;
 ResultEx:string;
begin
  Randomize;
  ResultEx := '';
  for I := 1 to 5 do;
  ResultEx := ResultEx + Chr( 65 + Random(26));
  ShowMessage(ResultEx);
end;


Eine Frage noch wie sag ich ihn das ich mehrere Buchstaben haben will und nicht nur eine?!


Dragonclaw - Mi 28.03.07 23:04

@Mr.D3ath:

Eh deine Funktion hat immer noch nen Fehler.

Mehrere Buchstaben bekommst du wenn du das ShowMessage aus der Schleife raus nimmst.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);  
var  
 I: integer;  
 ResultEx:string;
begin  
  Randomize;  
  ResultEx := '';   
  for I := 1 to 5 do  
  ResultEx := ResultEx + Chr( 65 + Random(26));  
  ShowMessage(ResultEx); 
end;


EDIT: Klammer??? Sry ich meinte Schleife


Karlson - Mi 28.03.07 23:20

Zitat:

Mehrere Buchstaben bekommst du wenn du das ShowMessage aus der Klammer raus nimmst.


Sorry, aber was meinst du damit? Er bekommt x Buchstaben wenn er for i:=1 to x schreibt. Das Showmessage würde nur dann blockieren wenn der Code for i:=1 to 5 do begin // end; hieße.

Folglich bekommt er mit dem das du gepostet hast das was er will. (Denn ';' hab ich leider übersehen).

Ich wollt das nur nochmal schreiben, weil deine Formulierung evt. falsch ausgelegt werden könnte. Ist ja aber eigentlich auch egal...


jasocul - Do 29.03.07 08:20

Ich habe mir das jetzt nicht alles angesehen, aber schau hier mal unter PW-Generator:
http://www.jasocul.de/html/downloads.html

Der Source ist nicht besonders abgesichert. Bei falschen Parametern durch den Anwender kann es zu Fehlern kommen, aber das ist nicht mein Problem. :wink:


F34r0fTh3D4rk - Mi 04.04.07 14:12

vielleicht sollte sich der threadersteller einfach mal den Suche in: Delphi-Forum, Delphi-Library CRASHKURS von user profile iconChristian S. angucken, dann bekommt er das auch hin ;) weil in diesem kurs ja angeblich das nicht drinsteht... :roll: programmieren ist eben nicht copy&paste. wenn du das dachtest, dann solltest du lieber gleich damit aufhören.

http://www.christian-stelzmann.de/artikel/crashkurs.htm

mdf


elundril - Mi 04.04.07 14:19

ich hab mal einen Passwortgenerator geschrieben. Mit Zahlen, groß und kleinbuzchstaben. Wenn du willst kann ich mal dir den relevanten Code samt erklärung schicken. mitdabei hab ich auch noch eine überprüfung wie sicher der Code ist!

lg el