If/then durch eigene Funktion ersetzen

Hallo,
mal eine theoretische Frage, habe nicht unbedingt vor, dies anzuwenden, aber mich interessiert es ob und wie es möglich wäre ein if/then durch eine eigene Funktion zu ersetzen, ungefähr so:

Private Sub theorie(byval arg1 as ?, byval arg2 as ?)
If(arg1) then arg2
End Sub

Aufruf wäre dann z.B. so:

Public Class form1
Dim a as boolean
Private sub xy()
theorie(a=true, me.close())
End Sub
End Class

Vom Prinzip her so:
Sub XY
Theorie (a, AddressOf CloseMe)
End Sub

Public Sub CloseMe
Me.Close
End Sub

Private Declare Function CallWindowProc Lib „USER32.DLL“ Alias „CallWindowProcA“ (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal uMsg As Long, ByVal WPARAM As Long, ByVal LPARAM As Long) As Long
Public Sub Theorie (ByVal Decision as Boolean, ByVal CallbackAdr as Long)
If Decision Then CallWindowProc CallbackAdr, hWnd, &0, &0, &0
End Sub

Die genauen Parameter für CallWindowProc schaust du am besten im MSDN nach

Genauer beschreiben, auch mit variabler Parameterübergabe ist das Verfahren auf diesen Seiten:
http://www.thevbzone.com/secrets.htm (siehe „Callback“)
http://www.activevb.de/tipps/vb6tipps/tipp0692.html

Der erste Teil scheint mir passend zu sein (condition as boolean).
Ich weiß nur nicht ob das mit dem Callback für mich das richtige ist. Mir geht es jedenfalls nicht direkt um das Me.Close()…
Ich wollte es ganz allgemein haben

Private Sub Theorie(Bedingung, Aktion)

z.B. anstatt if (Button1.Enabled=True) then xy=6 End if

Theorie(Button1.Enabled=True, xy=6)

Also dass ich Bedingungen und Aktionen beliebiger Art der Funktion als Parameter übergebe. Ob dafür CallWindowProc auch das richtige ist?

Hallo Timo,

du haettest erwaehnen sollen das es sich um VB.Net handelt. Aber dafür bist du hier im falschen Brett. Aber sei es drum.

Das was du suchst ist eine Stink normale Function. Functionen kannst du Parameter übergeben. Sie je nachdem (ByRef, ByVal) dort aendern. Auch liefern dir Functionen Ergebnisse zurueck. Du könntest dir zum Bsp. ein Wert vom Typ Boolean zurueck liefern lassen und diesen dann abfragen. Somit haettest du ein IF Konstrukt. Sprich

If DeineFunction(DeineParameter) then …

Hierbei musst du aber darauf achten das sie ein Wert vom Typ Boolean zurueck gibt. Sprich

Private DeineFunction(DeineParameter) as Boolean
DeineAktionen
Return True

Unter .Net, kannst du auch Functionen überladen :wink:

MfG Alex

By The Way … Mit CallWindowProc, wozu ?