Losowanie wyrazów

0

Witam,

Jak zrobić aby losowało mi wyrazy które są memo lub w edit.

Chodzi mi dokładniej o to aby tekst wpisany wygląda tak:
Witaj, {abc|def|bb}
i żeby wylosowało np tak. Witaj, def

??

0

może zrób tablicę np. 20 elementową, wklep te 20 wyrazów, imion, czy co tam chcesz i później losuj: Random() i odwołuj się do indeksu tablicy. A w oncreate formy daj Randomize;
*albo dynamiczną tablicę twórz i do niej pakuj dane, a później odwołuj się do niej, max index tablicy sprawdzisz za pomocą High() *albo olej tablice

0
pan_smierci napisał(a)

może zrób tablicę np. 20 elementową, wklep te 20 wyrazów, imion, czy co tam chcesz i później losuj: Random() i odwołuj się do indeksu tablicy. A w oncreate formy daj Randomize;
*albo dynamiczną tablicę twórz i do niej pakuj dane, a później odwołuj się do niej, max index tablicy sprawdzisz za pomocą High() *albo olej tablice

Tylko że te wyrazy wprowadzane są przez użytkownika więc nie mogę ich określić z góry (są to słowa a w pierwszym poście był luźny przykład).
Mógłbyś podać jakiś kod na którym mógłbym się podeprzeć?

0

SetLength()
High()
Random()
Randomize;

//edit
albo Tablice

//edit
dawno temu robiłem jakiś lamerski programik (w 5 minut, byle losował coś). Chyba połapiesz się jakie komponenty wrzucić i potestujesz działanie:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Memo2: TMemo;
    Label1: TLabel;
    Timer1: TTimer;
    Button1: TButton;
    Edit1: TEdit;
    Label2: TLabel;
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  dlugosc, i, j, rm: Integer;
  tablica: array of Integer;
  powtorzyl_sie: Boolean;
begin
  Memo2.Clear;
  powtorzyl_sie:= False;

  dlugosc:= StrToInt(Edit1.Text);
  SetLength(tablica, dlugosc);

  for i:= 0 to High(tablica) do
  begin
    tablica[i]:= -1;
  end;

  for i:= 0 to StrToInt(Edit1.Text) - 1 do
  begin

    repeat
      rm:= Random(Memo1.Lines.Count);

      for j:= 0 to High(tablica) do
      begin
        if (tablica[j] = rm) then
        begin
          powtorzyl_sie:= True;
          Break;
        end else powtorzyl_sie:= False
      end;

    until (powtorzyl_sie = False);

    tablica[i]:= rm;
    Memo2.Lines.Add(Memo1.Lines.Strings[rm]);
  end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Randomize;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  items: Integer;
begin
  items:= Memo1.Lines.Count;
  Label1.Caption:= 'Linii: ' + IntToStr(items);
end;

end.

chyba to ten kod, nie chce mi się sprawdzać, to zupełnie inny program, ale sobie popatrzysz co robi i może wykorzystasz wiedzę :P

i screen:
user image

0

Dzięki, przerobiłem i działa ;)

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