Tutorial
Überladen von Prozeduren und Operatoren (Overload)
von MOD | Seite 4 von 9 |
Mit dem Type ist es natürlich nicht getan, jetzt fehlen noch die Inhalte der Funktionen und anderen Member:
Constructor eigentlich_ein_string
'Startwert des einfachen Constructors ist ein Leerstring
this.daten = ""
End Constructor
Constructor eigentlich_ein_string (x As Integer)
'Startwert ist der Übergabewert als String
this.daten = Str(x)
End Constructor
Constructor eigentlich_ein_string (x As Double)
'Startwert ist der Übergabewert als String
this.daten = Str(x)
End Constructor
Constructor eigentlich_ein_string (x As String)
'Startwert ist der Übergabestring
this.daten = x
End Constructor
Constructor eigentlich_ein_string (x As eigentlich_ein_string)
'Startwert ist der Inhalt des Types
this.daten = x.daten
End Constructor
Destructor eigentlich_ein_string
'Den Destructor brauchen wir nicht explizit, da kein Speicher belegt wird, den man per Hand freigeben müsste
End Destructor
'###############################################################
Function eigentlich_ein_string.gibZahl (x As Integer) As Integer
'Inhalt als Integer zurückgeben
Return ValInt(this.daten)
End Function
Function eigentlich_ein_string.gibZahl (x As Double) As Double
'Inhalt als Double zurückgeben
Return Val(this.daten)
End Function
'###############################################################
Property eigentlich_ein_string.proGib As Double
'Inhalt als Double zurückgeben
Return Val(this.daten)
End Property
Property eigentlich_ein_string.proGib (x As Double)
'Übergabewert als String speichern
this.daten = Str(x)
End Property
'###############################################################
Operator eigentlich_ein_string.Cast As Integer
'Es wird ein Integer verlangt, also muss mit ValInt umgewandelt werden
Return ValInt(this.daten)
End Operator
Operator eigentlich_ein_string.Cast As Double
'Es wird ein Double verlangt, also muss mit Val umgewandelt werden
Return Val(this.daten)
End Operator
Operator eigentlich_ein_string.Cast As String
'Es wird ein String verlangt, direkte Rückgabe ist möglich
Return this.daten
End Operator
'###############################################################
Operator eigentlich_ein_string.+= (x As Integer)
'Inhalt wird um x erhöht
this.daten = Str(ValInt(this.daten) + x)
End Operator
Operator eigentlich_ein_string.+= (x As Double)
'Inhalt wird um x erhöht
this.daten = Str(Val(this.daten) + x)
End Operator
'###############################################################
Operator eigentlich_ein_string.Let (x As Integer)
'Übergabewert wird als String gespeichert
this.daten = Str(x)
End Operator
Operator eigentlich_ein_string.Let (x As Double)
'Übergabewert wird als String gespeichert
this.daten = Str(x)
End Operator
Operator eigentlich_ein_string.Let (x As String)
'Übergabewert wird als String gespeichert
this.daten = x
End Operator
Operator eigentlich_ein_string.Let (x As eigentlich_ein_string)
'Übergabewert wird direkt gespeichert
this.daten = x.daten
End Operator
'###############################################################
Operator eigentlich_ein_string.For
'For mit Variable, die vorher deklariert wurde
End Operator
Operator eigentlich_ein_string.Step
'Einfacher Step = Erhöhung um 1 in jedem Zyklus
this.daten = Str(ValInt(this.daten) + 1)
End Operator
Operator eigentlich_ein_string.Next (x As eigentlich_ein_string) As Integer
'Next bei Schleife ohne Angabe von Step
Return ValInt(this.daten) <= ValInt(x.daten)
End Operator
Operator eigentlich_ein_string.For (x As eigentlich_ein_string)
'For mit Variable, die direkt in der Anweisung deklariert wird
End Operator
Operator eigentlich_ein_string.Step (x As eigentlich_ein_string)
'Direkte Angabe von Step mit userdefiniertem Wert
this.daten = Str(ValInt(this.daten) + ValInt(x.daten))
End Operator
Operator eigentlich_ein_string.Next (x As eigentlich_ein_string, y As eigentlich_ein_string) As Integer
'Next bei Schleife mit Angabe von Step - es muss überprüft werden, ob rauf- (Step 1) oder runtergezählt (Step -1) wird
If ValInt(y.daten) >= 0 Then
Return ValInt(this.daten) <= ValInt(x.daten)
Else
Return ValInt(this.daten) >= ValInt(x.daten)
EndIf
End Operator
'###############################################################
Operator eigentlich_ein_string.@ () As ZString Ptr
'@ soll die Adresse des ZStrings im FBString zurückgeben
Return StrPtr(this.daten)
End Operator
Im Grunde sind die meisten Member dazu da, den gespeicherten Typ in der richtigen Form auszugeben oder übergebene Parameter in der richtigen Form abzuspeichern. Dazu wird meist nur gecastet, bzw. cast-verwandte Befehle wie Str verwendet.
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|