Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Object-Pascal / Delphi-Language (https://www.delphipraxis.net/35-library-object-pascal-delphi-language/)
-   -   Delphi Zufallsstrings (random strings) (https://www.delphipraxis.net/18936-zufallsstrings-random-strings.html)

shmia 26. Mär 2004 09:51


Zufallsstrings (random strings)
 
Hi,

manchmal braucht man Strings mit zufälligen Daten (z.B. zum Testen einen
Datenbank auf ihre Performance oder Erzeugen von zufälligen Telefonnummern).

Hier nun eine komplette Unit:

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;


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
 * RESULT: [-]
 *************************************************************************}
function RandomString(const len: Integer; const CharSet: string): string;
var
  i: Integer;
begin
  SetLength(Result,len);
  for i := 1 to len do
  begin
    Result[i] := CharSet[1+Random(Length(CharSet))];
  end;
end;

{**************************************************************************
 * NAME:   RandomString
 * DESC:   Es wird ein String aus dem offenen String-Array x zufällig
 *          ausgewählt und zurückgegeben
 * PARAMS: [-]
 * RESULT: [-]
 *************************************************************************}
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
 * PARAMS: [-]
 * RESULT: [-]
 *************************************************************************}
function RandomString(s: TStrings): string;
begin
  Assert(Assigned(s));
  Result := Trim(s.Strings[Random(s.Count)]);
end;


function RandomDigitString(const len:Integer):string;
begin
  Result := RandomString(len, '0123456789');
end;


end.
[edit=Matze]Code formatiert. Mfg, Matze[/edit]

CalganX 17. Sep 2005 13:29

Re: Zufallsstrings (random strings)
 
shmia hat den Code nochmal ein wenig überarbeitet:

Zitat:

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz