Delphi/pascal utworzenie ciągu liczb.

0

Witam

Mam prośbę o pomoc modyfikacji kodu. Jest to kod programu generującego wszystkie możliwe permutacje. np. dla liczby 2 tj. 21, 12. Poniżej w kodzie jest już podany ciąg:123456789, ale chciałbym żeby było to modyfikowane poprzez wstawienie w pole edycyjne(edit1.text) danej liczby permutacji i przez to utworzenie odpowiedniej długości łańcucha.np. dla 4 tj. 1234. Próbowałem, ale nie daję rady. Proszę o pomoc.

 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);



  procedure P(Poz: integer; Ciag: widestring);
  var
    j: integer;
    C: widestring;
  begin
    if Poz > Length(Ciag) then
      listbox1.items.Add(Ciag);
    for j := Poz to Length(Ciag) do
    begin
      C := Ciag;
      C[j] := Ciag[Poz];
      C[Poz] := Ciag[j];
      P(Poz+1, C);
    end;
  end;
var
  Ciag: widestring;
begin
  Ciag:='123456789';
  P(1, Ciag);
end;


end.
0

Zamiast

Ciag:='123456789';

zrób

Ciag:= Edit1;

Pozostali wstrzymują oddech...

0

hmm. Może źle to opisałem. Chciałbym, żeby wstawiając w pole edycyjne np. 4 powstał ciąg 1234, który zostanie przetworzony a nie to, że sam mam wpisać 1234 w pole edycyjne.:)

0

jesli dobrze rozumiem to chcesz utworzyc stringa "ciag" w ktorym beda kolejno znaki od "0" (czy tam "1") do cyfry podanej w edit? petla for sie klania i inttostr()

0
var str:String;
var i,c:char;

str:=Edit1.Text;
if Length(str)>0 then
begin
   c:=str[1];
   if ('0'<=c)and(c<='9') then
   begin
      str:='';
      for i:='0' to c do str:=str+i;
   end;
end;
0

Tak, tak. Właśnie o to chodzi. Tylko, że przy wszystkich próbach zastosowania pętli coś mi się kićka i nic nie wychodzi:(

0

hah, no tak, bo przeciez my jestesmy jasnowidzami i wiemy co masz nie tak w swoim kodzie... pokaz kod ktory napisales to powiemy co jest nie tak i dlaczego.
a tak w ogole... nastepne temtay zakladaj w dziale Newbie. Ten dzial w ktorym teraz piszesz nie jest dla poczatkujacych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1