Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
Turbo Delphi für Win32
|
Re: Zufallsstrings (random strings)
17. Sep 2005, 14:29
shmia hat den Code nochmal ein wenig überarbeitet:
Zitat von shmia:
Neu hinzugekommen ist die Funktion RandomBytes.
Bitte noch folgenden Hinweis mit in den Beitrag aufnehmen:
Bei Delphi 2 & 3 muss die Direktive overload weggelassen werden und die gleichnamigen Funktionen umbenannt werden.
Nach einem Hinweis von himitsu habe ich Zeigerarithmetik verwendet, um das Füllen der Strings zu Beschleunigen.
Delphi-Quellcode:
unit URandomString;
interface
uses Classes;
function RandomString( const len: Integer = 10; const CharSet: string = ' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'): string; overload;
function RandomString( const x: array of string): string; overload;
function RandomString(s:TStrings): string; overload;
function RandomDigitString( const len:Integer): string;
function RandomBytes( const len: Integer): string;
implementation
uses Sysutils;
{**************************************************************************
* NAME: RandomString
* DESC: Erzeugt einen zufälligen String
* PARAMS: len: länge des erzeugten strings
* CharSet: string der die zu verwendenden Zeichen enthält
*************************************************************************}
function RandomString( const len: Integer; const CharSet: string): string;
var
i: Integer;
pResult : PChar;
begin
SetLength(Result,len); // Speicher im Result-String reservieren
pResult := PChar(Result);
for i := 1 to len do
begin
pResult^ := CharSet[1+Random(Length(CharSet))];
Inc(pResult);
end;
end;
{**************************************************************************
* NAME: RandomString
* DESC: Es wird ein String aus dem offenen String-Array x zufällig
* ausgewählt und zurückgegeben
*************************************************************************}
function RandomString( const x: array of string): string; overload;
begin
Result := x[Random(Length(x))];
end;
{**************************************************************************
* NAME: RandomString
* DESC: Es wird ein String aus der StringListe s zufällig
* ausgewählt und zurückgegeben
*************************************************************************}
function RandomString(s: TStrings): string;
begin
Assert(Assigned(s));
if s.Count = 0 then
Result := ' '
else
Result := Trim(s.Strings[Random(s.Count)]);
end;
function RandomDigitString( const len:Integer): string;
begin
Result := RandomString(len, ' 0123456789');
end;
{**************************************************************************
* NAME: RandomBytes
* DESC: Es wird ein String geliefert, der zufällige Zeichen von #0 bis #255
* enthält
*************************************************************************}
function RandomBytes( const len: Integer): string;
const
MAX_BYTE = 256;
var
i: Integer;
pResult : PChar;
begin
SetLength(Result,len); // Speicher im Result-String reservieren
pResult := PChar(Result);
for i := 1 to len do
begin
pResult^ := Chr(Random(MAX_BYTE));
Inc(pResult);
end;
end;
end.
|
|
Zitat
|