Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String verdrehen (https://www.delphipraxis.net/108937-string-verdrehen.html)

fortuneNext 21. Feb 2008 13:15


String verdrehen
 
^Hi,
hier mal wieder eine einfache Frage.

Delphi-Quellcode:
  StringCopy := Uncrypted;
  x := 0;
  Randomize;
  For x := 1 to Length(Uncrypted) do
  begin
    StringCopy[x] := Uncrypted[Random(Length(Uncrypted))];
  end;
StringCopy soll eigentlicheine zufällige Reihenfolge von Buchstaben des Strings Uncrypted werden. Aber er wird irgendwie meistens zu kurz, nur 1-2 Buchstaben! (Uncrypted ist 4-9 Buchstaben lang). Wieso das?
fortuneNext

PS: Jaja, ich überseh wieder was sehr simples...

guidok 21. Feb 2008 13:22

Re: String verdrehen
 
...weil eine Zufallszahl auch mehrmals die gleiche sein kann.

RavenIV 21. Feb 2008 13:53

Re: String verdrehen
 
Ich glaube, zwei Denkfehler gefunden zu haben.

a) die for-Schleife darf nur bis Length(...) -1 laufen.
Begründung: Sonst liesst Du zuviele Werte aus.
b) es muss Random(Length(...) -1) heissen.
Begründung: Ein string ist mit "\0" abgeschlossen.
Wenn Du bis über das string-Ende rausliesst, liesst Du das "\0" mit aus.
Damit ist der string x schon frühzeitig beendet.

Wie wäre es, wenn Du mal den Debugger anschmeisst und schaust, wann und warum der string x zu kurz wird.
Alles andere sind nur Vermutungen...

Apollonius 21. Feb 2008 14:03

Re: String verdrehen
 
Ich glaube ihr überseht gerade etwas wichtiges, fortuneNext und RavenIV. Strings werden mit 1 bis Length(Str) indiziert, Random geht aber von 0 bis Parameter-1. Folglich muss zu Random noch 1 addiert werden.

fortuneNext 21. Feb 2008 17:38

Re: String verdrehen
 
Das ist es. Danke!

DeddyH 21. Feb 2008 17:41

Re: String verdrehen
 
Dir ist aber klar, dass Du wahrscheinich nicht die selben Buchstaben wie im Original erhältst?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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