Czy można używać zmiennych w tablicy jako numer indeksu?

0

Tylko jeden już ostatni, chodzi o to, że po kliknięciu raz guzikaButton1 program wykonuje się 5x. A powinien wykonać się raz po naciśnięciu raz buttona, potem miał bym możliwość zmiany wartości w polach typu Edit, znów kliknąć Button1 i tak 5 razy.

1

Procedura przypisana do obsługi zdarzania onclick przycisku zostaje wywołana jednorazowo przy każdym jego wciśnięciu. Natomiast to, o czym piszesz wynika z faktu, że zamieściłeś w jej treści pętlę for, która wykonuje się 5 razy. Wszystko jest OK i aplikacja działa tak, jak jej kazałeś :D

Co do Twojego opisu - ciężko mi w tej chwil zaproponować inne rozwiązanie, bo nie za bardzo wiem jak całe okienko wygląda, co, kiedy i jak chcesz tam wpisywać oraz jak ma aplikacja przetwarzać wprowadzone przez Ciebie dane. Możliwości rozwiązania tego.... nawet nie problemu, tylko tej sytuacji jest kilka:

  • wprowadzić 5 przycisków - po jednym dla każdego etapu/cyklu, w ramach którego chcesz, żeby się wykonała jakaś akcja. Wciskasz przycisk 1 i coś się dzieje, potem zmieniasz wpisane wartości, wciskasz 2 i tak dalej
  • zostawić jeden przycisk, który będzie wciskany za każdym razem, gdy wartości w polach zostały zmienione i który będzie powodował "odpalenie kolejnego cyklu". Każde jego wciśnięcie spowoduje wykonanie obliczeń/działań na aktualnie wpisanych danych
  • być może do poprzedniego punktu dobrze będzie dodać jakiś licznik, który będzie zliczał, które w serii jest to wywołanie i jak dojdzie do 5 (czyli tyle wykonań, ile masz obecnie dzięki pętli for) to uzna że "akcja" się zakończyła i wykona jakąś czynność - np. wyświetli stosowny komunikat.

Możliwości jest wiele, ale za mało wiem na temat samej aplikacji, żeby podjąć decyzję za Ciebie.

I jeszcze jedna uwaga odnośnie fragmentu " po kliknięciu raz [...] program wykonuje się 5x". Trochę źle to rozumiesz. Program (tudzież aplikacja) to jest "całość" którą widzisz na ekranie - czyli okienko, przyciski, pola do wpisywania danych itp. Nie możesz pisać, że program wykonuje się X razy, bo on wykonuje się raz. Zostaje uruchomiony i sobie "żyje" aż do chwili jego zamknięcia (czyli do zniknięcia okienka z ekranu). To o co Ci chodzi to nie jest "wykonanie programu" ale uruchomienie procedury obsługującej zdarzenie. W Delphi (oczywiście nie tylko w tym języku) w wypadku okien oraz ich komponentów (czyli np. przycisków czy pól typu Edit) oprogramowuje się zdarzenia - określa się procedury, które mają zostać wykonane w reakcji na dane zdarzenie. Zdarzeniem może być wciśnięcie klawisza, ruch myszą, zmiana rozmiaru oraz wiele innych. Wracając do tego co napisałeś - to nie program się wykonuje X razy, ale procedura obsługi zdarzenia. No ale ona też nie wykonuje się 5 razy, tylko raz po każdy wciśnięciu przycisku. Tyle że w jej treści jest pętla, której zadaniem jest "przemielenie" poleceń w niej zawartych 5 razy. Mam nadzieję, że rozumiesz ten opis, a dzięki temu rozumiesz też, dlaczego w obecnej postaci Twój kod działa tak, jak działa oraz jak można go przerobić, żeby działał tak, jak tego oczekujesz.

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