Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - Programmierung » Schnittstelle zu SQL Anywhere-Datenbanktools » Datenbanktools-Schnittstelle » DBTools-Schnittstelle verwenden

 

Callback-Funktionen verwenden

Einige Elemente in der DBTools-Struktur sind vom Typ MSG_CALLBACK. Es handelt sich dabei um Zeiger auf Callback-Funktionen.

Nutzung der Callback-Funktionen

Mit Callback-Funktionen können DBTools-Funktionen die Kontrolle der Verarbeitung an die aufrufende Anwendung des Benutzers zurückgeben. Die DBTools-Bibliothek verwendet Callback-Funktionen zur Verarbeitung von Nachrichten, die von den DBTools-Funktionen an den Benutzer gesandt werden, für vier Zwecke:

  • Bestätigung   Wird aufgerufen, wenn eine Aktion vom Benutzer bestätigt werden muss. Falls zum Beispiel das Sicherungsverzeichnis nicht vorhanden ist, fragt die Tools-Bibliothek, ob es erzeugt werden soll.

  • Fehlermeldung   Wird aufgerufen, um eine Nachricht zu bearbeiten, wenn ein Fehler auftritt, zum Beispiel, wenn ein Vorgang nicht genügend Speicherplatz hat

  • Informationsnachricht   Wird aufgerufen, um den Benutzer zu informieren, wie zum Beispiel eine Nachricht mit den Namen der Tabelle, die gerade entladen wird

  • Statusinformation   Wird aufgerufen, um den Status eines Vorgangs anzuzeigen, wie zum Beispiel, wieviel Prozent einer Tabelle entladen sind

Callback-Funktion einer Struktur zuordnen

Sie können der Struktur direkt eine Callback-Routine zuordnen. Die folgende Anweisung ist ein Beispiel für die Verwendung einer Sicherungsstruktur:

backup_info.errorrtn = (MSG_CALLBACK) MyFunction

MSG_CALLBACK ist in der Header-Datei dllapi.h definiert, die in SQL Anywhere enthalten ist. Tools-Routinen können Nachrichten an die aufrufende Anwendung übergeben, die dann in der betreffenden Benutzeroberfläche dargestellt werden. Dabei kann es sich um eine Fensterumgebung, die Standardausgabe eines zeichenbasierten Systems oder andere Benutzeroberflächen handeln.

Beispiel für eine Callback-Funktion mit Bestätigung

Im folgenden Beispiel fragt eine Routine den Benutzer nach einer Bestätigung mit YES oder NO und gibt die Antwort des Benutzers zurück:

extern short _callback ConfirmRtn(
        char * question )
{
    int ret = IDNO;
    if( question != NULL ) {
        ret = MessageBox( HwndParent, question,
        "Confirm", MB_ICONEXCLAMATION|MB_YESNO );
    }
    return( ret == IDYES );
}
Beispiel für eine Callback-Funktion mit Fehlermeldung

Im folgenden Beispiel zeigt eine Routine zur Behandlung einer Fehlermeldung die Fehlermeldung in einem Fenster an.

extern short _callback ErrorRtn(
        char * errorstr )
{
    if( errorstr != NULL ) {
        MessageBox( HwndParent, errorstr, "Backup Error", MB_ICONSTOP|MB_OK );
    }
    return( 0 );
}
Beispiel für eine Callback-Funktion mit Nachricht

Eine typische Implementierung einer Callback-Funktion, die eine Nachricht am Bildschirm ausgibt:

extern short _callback MessageRtn(
        char * messagestr )
{
    if( messagestr != NULL ) {
                    OutputMessageToWindow( messagestr );
    }
    return( 0 );
}
Beispiel für eine Callback-Funktion mit Statusmeldung

Eine Status-Callback-Routine wird aufgerufen, wenn ein Tool den Status eines Vorgangs anzeigen muss (zum Beispiel wie viel Prozent einer Tabelle entladen sind). Im folgenden Beispiel sehen Sie eine typische Implementierung, die die Nachricht lediglich am Bildschirm ausgibt:

extern short _callback StatusRtn(
        char * statusstr )
{
    if( statusstr != NULL ) {
        OutputMessageToWindow( statusstr );
    return( 0 );
}