Function An Function übergeben

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

BigPingu

Betreff: Function An Function übergeben

BeitragSa, Mai 24, 2008 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
hab da mal eine Frage. Ist es Möglich eine Function an eine Function zu übergeben?
Also kann ich eine Function in einer Variablen Speichern und sie dann darüber Aufrufen?


Ich habe Folgendermaßen so ähnlich probiert:

Code: [AUSKLAPPEN]

TuEtwas(10,10,FunctionA())
TuEtwas(11,11,FunctionB())


Function TuEtwas(VariableA,VariableB,MachXY)

   If  VariableA = VariableB Then
      MachXY
     EndIf

End Function



Dabei bekomme ich jedoch die Fehlermeldung das Die Function "MachXY" nicht gefunden wurde.

Falls ihr euch fragt was das Ganze soll, es dient dazu mir Code zu ersparen, weil diese Entscheidung sehr oft getroffen werden muss.
Meine Projekte:
Blockhead : 80%
VideoGameTycoon : 40%
  • Zuletzt bearbeitet von BigPingu am Sa, Mai 24, 2008 13:24, insgesamt einmal bearbeitet

The_Nici

BeitragSa, Mai 24, 2008 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hoffe dass das Pseudocode ist, und du DEN Code nicht ausführst.

BigPingu

BeitragSa, Mai 24, 2008 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich ist das Pseudocode Very Happy ... Dient nur dazu zu verdeutlichen was ich machen will Laughing
Meine Projekte:
Blockhead : 80%
VideoGameTycoon : 40%

The_Nici

BeitragSa, Mai 24, 2008 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, hab jetzt dein Problem verstanden.

Ich würds so machen:
Code: [AUSKLAPPEN]

Function TuWas(var1,var2,func$)
   Select func$
      Case "MachWas"
         MachWas(var1,var2)
      Case "SchlagEs"
         SchlagEs(var1,var2)
      Case "RumRennen"
         RumRennen(var1,var2)
   End Select
End Function


Nun, du übergibst die Funktion als String, dann wählt es per Select Case eine passende Funktion aus und führt diese aus.

MfG

BigPingu

BeitragSa, Mai 24, 2008 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja das ist es. Danke hast mir ne Menge sinnlosen Code ersparrt Laughing
Meine Projekte:
Blockhead : 80%
VideoGameTycoon : 40%

ToeB

BeitragSa, Mai 24, 2008 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Also wenn man mal überlegt :

Wenn du jetzt diese Function aufrufst :
Code: [AUSKLAPPEN]
Function TuWas(10,10,FunctionA())

Dann wird erst der Variable "VariableA" der wert 10 übergeben, danach der "VariabaleB". Danach wird die FunctionA() aufgerufen, um den RÜCKGABEWERT der Function der Variable MachXY zu übergeben. MachXY hat jetzt 0, wenn die Function nichts zurückgibt. Wenn du jetzt schreibst :
Code: [AUSKLAPPEN]
If VariableA = VariableB Then MachXY

Dann würd BlitBasic dir sagen, da es MachXY als Variable diffiniert hat, da es ja als Parameter dient, das man es nicht wie eine Function aufrufen kann.

Also musst du es mit diesem anderen Parameter machen, sonst funzt es nicht...

Man kann aber stat einem String, da ein String den Höchsten rechenaufwand benötigt, ein Integer nehmen, also so :
Code: [AUSKLAPPEN]
Function TuWas(Var1%,Var2%,Func%)
   If Var1 = Var2 then
      Select Func
      Case 1
         Lauf()
      Case 2
         Renn()
      End Select
   EndIf
End Function


Ist außerdem einfacher, das so zu machen, weil wenn man die mehrmal aufrufen möchte oder alle hintereinande, kann man einfach schleifen nehmen...

mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group