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 := 'A' to 'Z' do
for c2 := 'a' to 'z' do
for c3 := '0' to '9' do
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