Hi, herzlich willkommen!
Ich vermute, dich bist noch kein fortgeschrittener Programmierer, daher bleibe ich auf einem leichten (Anfänger-)Level und keinem performance-optimierten Code, was du aber nicht merken wirst. Ich hoffe, ich liege hier nicht falsch in meiner Annahme.
Lösen könntest du es beispielsweise so in der Art:
Delphi-Quellcode:
// auktuelles Wort auf dem label ausgeben
procedure WortAusgeben(WortAngezeigt: string);
var
i: Integer;
begin
Form1.Ratewort.Caption := '';
for i := 1 to Length(WortAngezeigt) do
begin
Form1.Ratewort.Caption := Form1.Ratewort.Caption + UpperCase(WortAngezeigt[i]);
if i < Length(WortAngezeigt) then
Form1.Ratewort.Caption := Form1.Ratewort.Caption + ' ';
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
Wort := 'DasKannstDuJaIrgendwoSelbstZuweisen';
// alles klein schreiben, damit der Vergleich nicht von
// Groß-/Kleinbuchstaben abhängig ist
Wort := LowerCase(Wort);
Ratewort.Caption := '';
for i := 1 to Length(Wort) do
WortAngezeigt := WortAngezeigt + '_';
WortAusgeben(WortAngezeigt);
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
i: Integer;
begin
if Pos(LowerCase(Key), Wort) > 0 then
begin
for i := 1 to Length(Wort) do
begin
if Wort[i] = Key then
WortAngezeigt[i] := Key;
end;
end;
WortAusgeben(WortAngezeigt);
end;
Viel Spaß.
Grüße, Matze