składowanie procedur z parametrami do późniejszego użycia

0

Witam
Piszę program, który ma działać na zasadzie takiej, że użytkownik planuje sobie kolejność i argumenty odpalanych procedur i dodaje do listy a komputer ma na celu realizowanie tej listy "rozkazów" o określonych porach.
Tutaj pojawia się właśnie mój problem... procedur jest dużo i mają różną ilość parametrów jak i ich rodzajów i nie mam pojęcia jak je przechowywać do późniejszego użycia. Wskaźniki do procedur nie rozwiązują problemu bo parametry musiały by by takie same chyba, że o czymś nie wiem? myślałem reż nad jakimś językiem komend, ale ta opcja wydaje mi się mało elegancka, no i problem byłby w przekazywaniu co bardziej złożonych typów jak jakieś rekordy.
A jak wy byście to ugryźli?

0

nikt nie pomoże?
czy tablice otwarte z tego artykułu Procedury i funkcje to dobre rozwiązanie?

0

W języku skryptowym to bardzo łatwe do osiągnięcia, np. w Python'ie można utworzyć listę, a do niej dodawać można krotki o dwóch polach (procedura,parametry) - ewentualnie można dołożyć trzecie pole - czas wykonania.
Takiej listy (bez czasu, aby nie zamotać ;)) by wyglądało mniej więcej tak:

lista=[]
lista.append( (procedura1,(parametr1,parametr2,parametr3)) )
lista.append( (procedura2,(parametr2,parametr1,parametr3)) )

Wywołanie procedura1:
lista[0][0](*lista[0][1])

    • gwiazdka rozpakowuje krotkę (tuplę) argumentów ;)

Problem przekazywania bardziej złożonych typów rozwiązuje się sam :D Jeśli nawet chcesz podawać z GUI bardziej złożone typy to masz trochę możliwości, np. nieelegancki sposób jest taki, żeby użyć funkcji wbudowanej exec(), która odpala kod napisany w Pythonie, np. masz klasę wektor, która w konstruktorze przyjmuje X,Y:

x,y=4,2
exec( "v=Vector("+x+","+y+")" )

Instancję v utworzoną w taki sposób możesz bezproblemowo potem w kodzie użyć ;) Chodzi o to, że możesz podać nawet wszystkie parametry funkcji jako jeden łańcuch znaków bez potrzeby modyfikacji kodu ;) Nie jest to może bezpieczne (bez walidacji), ale jak widać, łatwiej i szybciej to zrobisz niż w samym Delphi.

0

no właśnie kodziłem nieco w JS i tam to też jest banalne, ale w Delphi stanowi to nie lada problem (przynajmniej dla mnie) choć mam nadzieje, że się mylę...
Szukam więc jakichś podpowiedzi koniecznie dla Delphi 7.

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