Schau Dir mal die Hilfe zu Copy an und überprüf mal was Du dort machst
.
Generell ist Dein Code ein wenig komisch. Ich schreib hier mal die Sachen:
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var i, buchstabe, wlange:Integer; key:STring;
begin
key := Edit1.Text;
buchstabe := 0;
wlange := Length (wort);
for i := 0 to (wlange) do // Die Schleife wird in der Form "Anzahl der Buchstaben + 1" Mal ausgeführt. Du willst sie aber nur für jeden Buchstaben im String ausführen. Also entweder i := 1 to wlange oder i := 0 to (wlange - 1).
begin
inc (buchstabe); // Eigentlich ist das völlig unnötig. Weil Du hast doch schon eine Variable die bei jedem Schleifendurchlauf inkrementiert wird -> i. wenn du die for schleife von "1 to wlange" definierst, gehst du jeden einzelnen Buchstaben von Wort durch
if Copy (wort, buchstabe, buchstabe) = key then // das Copy ist falsch und eigentlich auch total unnötig. Wenn Du Copy verwenden willst, dann schau Dir die Hilfe zu Copy an. Alternativ überleg mal: So ein String kann man auch als ein Array of Char sehen. Vielleicht kommst Du drauf was effektiver wäre :).
begin
TButton (FindComponent('Button' + IntToStr (buchstabe))).Caption := Copy (wort, buchstabe, buchstabe); // Das Gleiche wie oben.
end;
end;
end;