Dein Problem ist, dass du die Indezes bei 1 beginnen lässt. Die beginnen in Delphi aber bei 0. Richtig wäre also das hier:
Delphi-Quellcode:
function CheckKey(List: TStringList): boolean;
var
i,x: Integer;
begin
Result := false;
for x := 1 to 4 do
begin
for i := length(List.Strings[x-1]) downto 1 do
delete(List.Strings[x-1],i,1);
ShowMessage(List.Strings[x-1]);
end;
end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
List: TStringList;
i: Integer;
s: TComponent;
begin
for i := 1 to 4 do
begin
s := FindComponent('Edit' + IntToStr(i));
List := TStringList.Create;
List.Add(s.Name);
List.Free;
end;
CheckKey(List);
end;
Diese Prozedur macht für mich keinen Sinn, da du 4 mal eine Stringlist erstellst, dann etwas hinzufügst, wieder freigibst und anschließend versuchst, die Zeichen zu löschen. Erstelle die Liste einmal und gib sie auch nur einmal frei...