TYPE's als Funktionsargumente

Previous topic - Next topic

Quentin

In der Hilfe ist beschrieben, daß man TYPE's als Funktionsargumente als auch als Rückgabewerte von Funktionen nutzen kann. Somit liegt doch die Vermutung nahe, daß man beides auch kombinieren kann, da Funktionsaufrufe generell ja geschachtelt werden können. Ich habe also eine Funktion, die einen TYPE zurückliefert. Wenn ich jedoch diese Funktion als Funktionsargument einer zweiten Funktion mitgebe, erhalte ich einen Fehler "(9) error : wrong argument type : PrintType, arg no: 1"

Einfaches Beispiel:
Die Funkton MakeType erstellt eine Variable vom Typ t_type. Die Funktion PrintType soll die Werte ausgeben und erwartet einen Parameter vom Typ t_type. Erstelle ich erst eine Variable vom Typ t_type und übergebe diese als Parameter an PrintType, funktioniert das. Übergebe ich als Parameter gleich den Funktionsaufruf, erhalte ich den Fehler. (geschrieben mit Version 5.360)

Code (glbasic) Select

TYPE t_type
a; b; c
ENDTYPE

LOCAL ty AS t_type

//ty = MakeType(5, 3, 7)
//PrintType(ty) <----- das funktioniert
PrintType(MakeType(5, 3, 7))  // <----- das nicht
SHOWSCREEN
KEYWAIT


// ------------------------------------------------------------- //
// ---  MAKETYPE  ---
// ------------------------------------------------------------- //
FUNCTION MakeType AS t_type: a, b, c
LOCAL lt AS t_type
lt.a = a
lt.b = b
lt.c = c
RETURN lt
ENDFUNCTION // MAKETYPE


// ------------------------------------------------------------- //
// ---  PRINTTYPE  ---
// ------------------------------------------------------------- //
FUNCTION PrintType: pt AS t_type
PRINT pt.a, 0, 0
PRINT pt.b, 0, 20
PRINT pt.c, 0, 40
ENDFUNCTION // PRINTTYPE

Kitty Hello

Compiler Fehler. Bitte so wie oben machen, das ist eine härtere Nuss.

Quentin