Zla dlugosc przy losowaniu stringa...

0

Wyprodukowalem sobie ostatnio kodzik do losowania stringów o zadanych znakach i zadanej dlugosci:

Function TForm1.Generate(LLength: Byte; AreBig, AreSmall, AreDigits,
                  AreSpecial: Boolean; AreOwn: Boolean; Own: String) : String;
Var
  Chars: String;
  password: String;
  I: integer;
  CChar: Char;
Begin;
  Chars:='';
  Password:= '';
  If AreBig then
    Chars:= Chars+ 'QWERTYUIOPASDFGHJKLZXCVBNM';
  If AreSmall then
    Chars:= Chars+ 'qwertyuioplkjhgfdsazxcvbnm';
  If AreDigits Then
    Chars:=Chars+ '123456789';
  If AreSpecial then
    Chars:=Chars+ '!@#$%^&*()_-+=[]{};\:"|,./<>?''';
  If AreOwn Then
    Chars:= Chars+ Own;
  For I:=1 to LLength do
    Begin
      Randomize;
      CChar:= Chars[Random(Length(Chars))];
      Password:= Password+ CChar;
    End;
  Result:= password;
end;

Ale jak zwykle jakis problem :/
W innej procedurze robie sobie w ladnej petelce for losowanie stringa kilka razy, potem to do ListView. I co kilka losowan string ma:
Albo za malo znakow
Albo sklada sie z samych spacji
Probowalem juz w petli While sprawdzac, czy znak nie ma dlugosci 0, czy string nie jest za krotki, ale wyglada na to, ze Delphi liczy w tych stringach gdzie jest za malo znakow te brakujace.
Kiedys juz mialem cos podobnego, a kodu nie moge znalezc...
Jak zwykle nie wiem jak skonczyc...
A wiec jak zwykle pytam:
Moze ktos wie????

0

To powinno rozwiazac problem:

CChar:= Chars[Random(Length(Chars)) + 1];

i to Randomize daj przed petle.

0

Rozwiazanie wlasnie znalazlem przed chwila na jednej z moich wiekowych plyt z danymi... Jakie je wtedy wspaniale programy robilem.. Az sie lezka w oku kreci.
Dzieki...

1 użytkowników online, w tym zalogowanych: 0, gości: 1