Код:
var
I : Integer;
Buf : String;
begin
Memo1.Lines.Clear;
For I := 100 To 999 Do
Begin
Buf := IntToStr(I);
If (Buf[1] <> Buf[2]) And (Buf[1] <> Buf[3]) And (Buf[2] <> Buf[3])
Then Memo1.Lines.Add(Buf);
End;
end;
И все. Непонятно из-за чего ломаются копья.
Конечно, это вариант с хардкодом - только трехзначные числа.