Wielokrotne wyświetlanie wyniku w polu edycyjnym

0

Cześć i czołem :)
Uczę się Pascala i napotkałem problem, którego nie mogę rozwikłać od dłuższego czasu.
Chciałbym żeby mój program podawał wynik mnożenia w polu TEdit.
W 50% przypadków ma być losowy, a w pozostałej części prawidłowy. Zanim jednak to nastąpi chciałbym, aby w polu wyniku 30 razy wyświetliła się losowa liczba.
Efekt losowości udało mi się uzyskać poprzez funkcje Randomize;
Mój problem polega na tym, że nie wiem jak przekonać program by wyświetlił 30 razy losowy wynik, a nie tylko ten ostateczny :) w tym momencie dostaje tylko odpowiedź końcową.
Będę bardzo wdzięczny za wskazówki! :)
Pracuje na Lazarusie.
Wklejam kod do podglądu:

var liczba2 : integer ;
var wynik : integer ;
var losowosc : integer ;
var szansa : integer ;
  var petla : integer ;
begin
    Randomize;
    petla := 0;
    liczba1 := StrToInt(Edit1.text);
    liczba2 := StrToInt(Edit2.Text);
    szansa := random(2);
    losowosc := random(2000);
    wynik :=  liczba1 * liczba2;


    if (szansa =1) then
        begin
         for petla:=0 to 30 do               {Po kliknięciu przycisku chcialbym 30 razy zobaczyć losowy wynik w polu edit3}
            begin
            edit3.text := IntToStr(losowosc) ;
            end
        end
        else
        begin
        edit3.text := IntToStr(wynik);
        end;

end;
              
2

Nie wiem czy o to chodzi

	     for petla:=0 to 29 do //Po kliknięciu przycisku chcialbym 30 razy zobaczyć losowy wynik w polu edit3 <- tu miałeś błąd tak jak miałeś 0 - 30 to 31 razy (może być też 1 to 30)
            begin
			  losowosc := random(2000);  //tu musisz losowac wynik
			  edit3.text := IntToStr(losowosc);
			  Application.ProcessMessages;  //przetwórz kokolejkę komunikatów (potrzebne aby nie zamrażać za długo programu no i aby program min. pokazał wynik)
			  Sleep(1000); //czekaj 1000ms = 1s		  
            end;

albo (bo nie bardzo rozumiem co chcesz) zmień całą instrukcję if na:

	        for petla:=0 to 29 do //Po kliknięciu przycisku chcialbym 30 razy zobaczyć losowy wynik w polu edit3
            begin
			  losowosc := random(2000); //tu musisz losowac wynik
			  edit3.text := IntToStr(losowosc);
			  Application.ProcessMessages;  //przetwórz kokolejkę komunikatów (potrzebne aby nie zamrażać za długo programu no i aby program min. pokazał wynik)
			  Sleep(1000); //czekaj 1000ms = 1s		  
            end;
			if (szansa = 1) then //50% szans to w końcu pokaże prawidłowy (jak nie to zostanie losowy)
			  edit3.text := IntToStr(wynik);
0

Super! Dokładnie o to mi chodziło :) i rozumiem już, gdzie był mój błąd.
Dziękuje!

2
Nibek napisał(a):

Mój problem polega na tym, że nie wiem jak przekonać program by wyświetlił 30 razy losowy wynik, a nie tylko ten ostateczny :) w tym momencie dostaje tylko odpowiedź końcową.

Wrzucaj te 30 wyników np. do kontrolki typu TListBox. Pole edycyjne może przechowywać jeden ciąg znaków, więc aby wyświetlić wszystkie wylosowane liczby, trzeba je dodawać na koniec obecnego ciągu.

0

@furious programming: Dzięki za pomoc :)

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