AGB  ·  Datenschutz  ·  Impressum  







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

Zufallstrings (random strings)

Ein Thema von shmia · begonnen am 15. Sep 2005 · letzter Beitrag vom 17. Sep 2005
Thema geschlossen
shmia

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

Zufallstrings (random strings)

  Alt 15. Sep 2005, 08:54
Delphi-Version: 4
Bitte den bestehenden Beitrag:
http://www.delphipraxis.net/internal...ct.php?t=21709
um folgenden Code erweitern oder ersetzen.
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.
Andreas
 
17. Sep 2005, 13:30
Dieses Thema wurde von "Chakotay1308" von "Neuen Beitrag zur Code-Library hinzufügen" nach "Object-Pascal / Delphi-Language" verschoben.
Hier in der Code-Library.
Thema geschlossen


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 07:30 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