Wywolanie procedury po adresie

0

W jaki sposób wywołać procedurę znając jej adres?

0
gosc napisał(a)

W jaki sposób wywołać procedurę znając jej adres?

type
  TMojaProcedura = procedure(zm1: string);

var
  proc: TMojaProcedura;
begin
  @proc:=adres;
  proc;
end;


Albo jakoś tak.

Na końcu deklarowania typu proceduralnego możesz dodać(przed średnikiem) of object, czyli:
<delphi>
TMojaProcedura = procedure(zm1: string) of object;

Nie wiem, na czym polega różnica.

Oczywiście zm1 to zmienna jaką masz w procedurze. Jeśli ich nie masz, to tego nie robisz :)</delphi>

0

... Na końcu deklarowania typu proceduralnego możesz dodać(przed średnikiem) of object ...

of object znaczy że jest to metoda jakiegoś obiektu, bez tego - że jest to goła procedura "globalna"

b

0

gosc napisał swoje pytanie ale nie uwzględnił języka (delphi czy pascal)

nie jestem pewien czy w delphi to wygląda tak samo ale w psacalu wygląda to tak:

type
 typprc=procedure;
var
 zmienna:typprc;
begin
 zmienna:=ptr({segment},{offset});
 {od tego momentu korzystasz ze zmiennej zmienna jak z procedury}
end;

mam nadzieje, że wiesz co oznaczają segment i offset (bez tej wiedzy raczej nie bierz się za takie sztuczki)

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