procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
S: string;
T: string;
begin
Memo1.Lines.BeginUpdate;
try
for I := 0000 to 9999 do begin
S := Format('%.4d', [I]);
T := '12?12???';
T := StringReplace(T, '?', S[1], []);
T := StringReplace(T, '?', S[2], []);
T := StringReplace(T, '?', S[3], []);
T := StringReplace(T, '?', S[4], []);
Memo1.Lines.Add(T);
end;
finally
Memo1.Lines.EndUpdate;
end;
end;