uniwersalne procedurki

0

Mam pytanie. Czy jest taka możliwość, żeby napisać uniwersalną funkcje/procedurę dla różnych typów? Już pisze dokładnie o co mi chodzi. Powedzmy, że mam zdefiniowane dwa typy:

type
typ1 = record
zmienna1 : jakis_typ;
zmienna2 : jakis_typ;
......
end;

     typ2 = record
                 zmienna3 : jakis_typ;
                 zmienna4 : jakis_typ;
                 ......
               end; </i>

i teraz piszę funkcję np. szukająca jakiś wartości:

function find (co : jakis_typ; gdzie : jakis_typ) : jakis_typ;
begin
instrukcje;
end;

I teraz moje pytanie: chcę aby tę funkcję mógł użuć i do typu1 i typu2 oraz, że szukane wartości w jednym i w drugim mogą również się różnić. Zaznaczę, że typy1 i 2 też się różnią. Dla dwóch odrębnych typów pisanie dwóch funkcji jeszcze ma sens ale zalozmy ze mamy 10 typów to pisanie 10 funkci różniących sie tylko typami nie ma przecieŻ sansu. Czy da się zrobić taką 'uniwersalna' funkcje/procedure?

0

Z typami to się chyba nie da, ze zmiennymi mógłbyś spróbować typu Variant. Możesz też kombinować z rekordami wariantowymi, i stworzyć jeden megatyp dla wszystkich potrzebnych ci zmiennych.

0

Jesli rozmiar sie nie rozni to moze sie uda rzutowanie.

0

Dla dwóch odrębnych typów pisanie dwóch funkcji jeszcze ma sens ale zalozmy ze mamy 10 typów to pisanie 10 funkci różniących sie tylko typami nie ma przecieŻ sansu.

Ale jak chcesz napisać jedną procedurę do różnych typów ? Jeżeli róznią sie polami to nie mozna ich obsługiwać identycznie. Jeżeli masz podobne funkcję a inne typy danych wejściowych - zobacz na http://4programmers.net/Forum/viewtopic.php?id=54331&post=139506#139506.
Jeżeli chodzi ci o to że kilka pól róznych typów jest takich samych to może dałoby się zastosować coś w rodzaju dziedziczenia (ale to juz chyba dotyczy tylko klas) - deklarujsze podstawową klasę z typami wspólnymi, a potem klasy potomne, rózniące sie miedzy sobą, ale zawierające odziedziczone wspolne pola. Potem jako parametr funkcji podajesz klasę z której dziedziczą inne.

Nie wiem czy dobrze kombinuję, bo w praktyce nigdy nie potrzebowałem używać takich "trików" :) .

0

rob wszystko na typie string. moze ladnie to nie wyglada ale powinno dzialac

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