Einzelnen Beitrag anzeigen

jan17

Registriert seit: 23. Feb 2011
2 Beiträge
 
#1

Zeichenketten nach Maske generieren

  Alt 23. Feb 2011, 17:03
Delphi-Version: XE
Hi,

Ich versuche gerade eine Funktion zu programmieren, die Zeichenketten nach einer bestimmten Maske generiert.
Also "l" sind z.B. alle Kleinbuchstaben, "u" alle Großbuchstaben, "d" alle Zahlen, "m" alle Groß- und Kleinbuchstaben und "a" alle Groß-/Kleinbuchstaben und Zahlen.

Der Funktion übergibt man nun z.B. den Parameter "uld" und es werden dann alle 6760 möglichen Zeichenketten daraus generiert.
Delphi-Quellcode:
Aa0
Aa1
Aa2
Aa3
...
Zz7
Zz8
Zz9
Ich habe es bisher nur so hinbekommen:
Delphi-Quellcode:
const
  len=3;
var
  c1,c2,c3:char;
  s:string;
  f:textfile;
begin
  assignfile(f,'test.txt');
  rewrite(f);
  setlength(s,len);
  for c1 := 'Ato 'Zdo
    for c2 := 'ato 'zdo
      for c3 := '0to '9do
      begin
        s[1]:=c1;
        s[2]:=c2;
        s[3]:=c3;
        writeln(f,s);
      end;
  closefile(f);
end;
Das funktioniert aber nur für diesen speziellen Fall und ist nicht allgemeingültig, so dass man es jedes mal wieder ändern muss.

Zur Berechnung der Anzahl der Kombinationen habe ich diese Funktion:
Delphi-Quellcode:
function calc(const s:string):uint64;
var i:byte;
begin
  result:=1;
  for i := 1 to length(s) do
    case s[i] of
      'l','u':result:=result*26;
      'm'    :result:=result*52;
      'd'    :result:=result*10;
      'a'    :result:=result*62;
    end;
end;
Könnt ihr mir helfen eine allgemeingültige Funktion zu schreiben? Ich bin mir ziemlich sicher, dass es mit Rekursion recht einfach gehen könnte
  Mit Zitat antworten Zitat