hi
ich will eine zufällig erstellten Text ausgeben.
Ich habe 4 Char Arrays (1..26: Großbuchstaben, 1..26 Kleinbuchstaben, 1..26 Sonderzeichen, 1..10 Zahlen). Ich habe es mit einer For-Schleife versucht, hat aber nicht gut funktioniert. Er hat immer nur einen Buchstaben ausgegeben. Mein Hauptproblem ist, dass ich 4 Checkboxen habe und er vor dem Erstellen schauen soll, ob sie aktiviert sind oder nicht.
Ich weiß, der Code ist nicht besonders einfallsreich, ich habe es so versucht wie ich gedacht habe, dass es funktionieren sollte, das tut es aber nicht.
hier der Code
big, small, extra(sonderzeichen) und number sind die Checkboxen.
Delphi-Quellcode:
procedure TForm1.codegenClick(Sender: TObject);
var
bgross: Array[1..26] of Char;
bklein: Array[1..26] of Char;
sonder: Array[1..26] of Char;
zahlen: Array[1..10] of Char;
anzahl: Integer;
i, b: Integer;
select: Integer;
defini: Integer;
unterd: Integer;
zdef : Integer;
zunter: Integer;
begin
bgross[1]:= 'A';
bgross[2]:= 'B';
bgross[3]:= 'C';
bgross[4]:= 'D';
bgross[5]:= 'E';
bgross[6]:= 'F';
bgross[7]:= 'G';
bgross[8]:= 'H';
bgross[9]:= 'I';
bgross[10]:= 'J';
bgross[11]:= 'K';
bgross[12]:= 'L';
bgross[13]:= 'M';
bgross[14]:= 'N';
bgross[15]:= 'O';
bgross[16]:= 'P';
bgross[17]:= 'Q';
bgross[18]:= 'R';
bgross[19]:= 'S';
bgross[20]:= 'T';
bgross[21]:= 'U';
bgross[22]:= 'V';
bgross[23]:= 'W';
bgross[24]:= 'X';
bgross[25]:= 'Y';
bgross[26]:= 'Z';
bklein[1]:= 'a';
bklein[2]:= 'b';
bklein[3]:= 'c';
bklein[4]:= 'd';
bklein[5]:= 'e';
bklein[6]:= 'f';
bklein[7]:= 'g';
bklein[8]:= 'h';
bklein[9]:= 'i';
bklein[10]:= 'j';
bklein[11]:= 'k';
bklein[12]:= 'l';
bklein[13]:= 'm';
bklein[14]:= 'n';
bklein[15]:= 'o';
bklein[16]:= 'p';
bklein[17]:= 'q';
bklein[18]:= 'r';
bklein[19]:= 's';
bklein[20]:= 't';
bklein[21]:= 'u';
bklein[22]:= 'v';
bklein[23]:= 'w';
bklein[24]:= 'x';
bklein[25]:= 'y';
bklein[26]:= 'z';
sonder[1]:= '^';
sonder[2]:= '!';
sonder[3]:= '"';
sonder[4]:= '%';
sonder[5]:= '&';
sonder[6]:= '/';
sonder[7]:= '{';
sonder[8]:= '(';
sonder[9]:= '[';
sonder[10]:= ')';
sonder[11]:= ']';
sonder[12]:= '=';
sonder[13]:= '}';
sonder[14]:= '?';
sonder[15]:= '+';
sonder[16]:= '*';
sonder[17]:= '#';
sonder[18]:= ' '; //Leertaste
sonder[19]:= '-';
sonder[20]:= '_';
sonder[21]:= '.';
sonder[22]:= ':';
sonder[23]:= ',';
sonder[24]:= ';';
sonder[25]:= '<';
sonder[26]:= '>';
zahlen[1]:= '1';
zahlen[2]:= '2';
zahlen[3]:= '3';
zahlen[4]:= '4';
zahlen[5]:= '5';
zahlen[6]:= '6';
zahlen[7]:= '7';
zahlen[8]:= '8';
zahlen[9]:= '9';
zahlen[10]:= '0';
if (big.Checked = false) and (small.Checked = false) and (extra.Checked = false)
and (number.Checked = false) then
begin
ShowMessage('Please select the wanted properties!');
exit
end;
anzahl:= 0;
defini:= 26;
zdef := 10;
If big.Checked then
inc(anzahl);
If small.Checked then
inc(anzahl);
If extra.Checked then
inc(anzahl);
If number.Checked then
inc(anzahl);
randomize;
for i:= 1 to StrToInt(repeat1.Text) do //anzahl
select:= random(anzahl);
unterd:= random(defini);
zunter:= random(zdef);
if select = 1 then
begin
if big.Checked then
begin
edit1.Text:= edit1.Text + bgross[unterd];
end
else if small.Checked then
begin
edit1.Text:= edit1.Text + bklein[unterd];
end
else if extra.Checked then
begin
edit1.Text:= edit1.Text + sonder[unterd];
end
else if number.Checked then
begin
edit1.Text:= edit1.Text + zahlen[zunter];
end;
end;
if select = 2 then
begin
if small.Checked then
begin
edit1.Text:= edit1.Text + bklein[unterd];
end
else if extra.Checked then
begin
edit1.Text:= edit1.Text + sonder[unterd];
end
else if number.Checked then
begin
edit1.Text:= edit1.Text + zahlen[zunter];
end;
end;
if select = 3 then
begin
if extra.Checked then
begin
edit1.Text:= edit1.Text + sonder[unterd];
end
else if number.Checked then
begin
edit1.Text:= edit1.Text + zahlen[zunter];
end;
end;
if select = 4 then
begin
if number.Checked then
begin
edit1.Text:= edit1.Text + zahlen[zunter];
end;
end;
end;
Wäre für Hilfe dankbar