AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zufallsstrings (random strings)

Ein Thema von shmia · begonnen am 26. Mär 2004 · letzter Beitrag vom 17. Sep 2005
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

Zufallsstrings (random strings)

  Alt 26. Mär 2004, 10:51
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]
Andreas
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Zufallsstrings (random strings)

  Alt 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.
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 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