Callback: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
K (Beispiele: Rechtschreibung verbessert)
K (Konzept)
Zeile 4: Zeile 4:
 
Normalerweise ist ein Funktionsaufruf bereits wärend dem Linken bekannt. Das Programm weis also schon wo es hinspringen soll.  
 
Normalerweise ist ein Funktionsaufruf bereits wärend dem Linken bekannt. Das Programm weis also schon wo es hinspringen soll.  
  
Beim Entwerfen von Librarys ist es aber hin und wieder notwendig, den Nutzer freizustellen wo das Programm weiter abgearbeitet werden soll. Das wird über Callbacks/Funktionpointer gelöst. Anstatt einen althergebrachten Funktionsaufruf zu benutzen wird also ein Zeiger auf eine Funktion gesetzt. Wärend der Laufzeit kann diesem Pointer ein anderer Wert zugewiesen werden, mit der Folge, dass beim nächsten Aufruf dieser Funktion das Programm an eine andere Stelle springt.
+
Beim Entwerfen von Librarys ist es aber hin und wieder notwendig, dem Nutzer freizustellen wo das Programm weiter abgearbeitet werden soll. Das wird über Callbacks/Funktionpointer gelöst. Anstatt einen althergebrachten Funktionsaufruf zu benutzen wird also ein Zeiger auf eine Funktion gesetzt. Wärend der Laufzeit kann diesem Pointer ein anderer Wert zugewiesen werden, mit der Folge, dass beim nächsten Aufruf dieser Funktion das Programm an eine andere Stelle springt.
  
 
==Beispiele==
 
==Beispiele==

Version vom 21. November 2005, 20:03 Uhr

Callbacks sind Zeiger auf Funktionen

Konzept

Normalerweise ist ein Funktionsaufruf bereits wärend dem Linken bekannt. Das Programm weis also schon wo es hinspringen soll.

Beim Entwerfen von Librarys ist es aber hin und wieder notwendig, dem Nutzer freizustellen wo das Programm weiter abgearbeitet werden soll. Das wird über Callbacks/Funktionpointer gelöst. Anstatt einen althergebrachten Funktionsaufruf zu benutzen wird also ein Zeiger auf eine Funktion gesetzt. Wärend der Laufzeit kann diesem Pointer ein anderer Wert zugewiesen werden, mit der Folge, dass beim nächsten Aufruf dieser Funktion das Programm an eine andere Stelle springt.

Beispiele

Das gängigste Beispiel sind GUI Klassen. Borland z.B. baut bei der VCL und CLX auf Funktionszeiger bei allen Ereignissen. Möchte man z.B. während der Laufzeit das Verhalten eines Buttons ändern kann man dies per

Btn.OnClick := zeigerAufOnClickFunktion;
machen.

Ein weiteres Beispiel für Callbacks ist die "sort" Funktion bei TList. Siehe dazu die Delphihilfe.

Callbacks werden z.B. auch bei der GLUT verwendet. Dort existieren Callbacks für viele verschiedene Funktionen wie z.B. die standard Zeichenfunktion, oder die Mausbehandlungsfunktion. Durch den Callbackansatz kann der Programmierer, der diese Bibiothek nutzt, einfach eine eigene Funktion schreiben (welche den selben Funktionskopf besitzt) und dem Programm mitteilen, dass beim Aufruf von Callback XYZ genau dieser Code ausgeführt werden soll.

Siehe Auch

Tutorial zum Thema "function pointer" und "Callbacks" für C/C++ <div class="center">
Flag english.gif
</div>