vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Funktion mit fest definierten Parametern 
Autor: henrikl2000
Datum: 30.03.15 20:31

Hallo,

Wie baue ich einer Funktion mit fest definierten Parametern zur Wahl wie zum Beispiel Color?
Es soll so funktionieren das wenn ich die Funktion TestFunc aufrufe die Parametern die zur Wahl steht in eine Liste angezeigt wird.

Private Function TestFunc(ByVal param As ???) As ???
    End Function
Soll param als Enum aufgebaut werden oder? Und wie?

Danke schon im Voraus
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: Manfred X
Datum: 30.03.15 21:15

Hallo!

Das funktioniert durch das Konzept der Überladung von Methoden.
(Du erstellst mehrere Funktionen mit dem gleichen Namen in der gleichen Klasse,
aber mit unterschiedlichen Parameterlisten. Die IDE zeigt die Varianten an.)

Beitrag wurde zuletzt am 30.03.15 um 21:24:15 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: henrikl2000
Datum: 30.03.15 21:34

Hallo,

Danke für deine Antwort.
Es tut mir leid aber das verstehe ich nicht ganz.
Ich wusste nicht dass man mehrere Funktionen mit demselben Namen haben kann.

Könntest du mir ein Beispiel geben?
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: Blackbox
Datum: 30.03.15 21:51

Hi,

fest eingebaute Parameter nennt man Konstante. Mehrere solche Konstante werden in einer Enumeration zusammen gefasst.

Innerhalb des Moduls oder (nur andere Bezeichnung dafür) Namespace erstellst Du eine Enum-Struktur wie folgt:

Enum MyKonst
    Test = 1
    Test2 = 2
    Test4 = 3
End Enum
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: Manfred X
Datum: 30.03.15 21:56

Ich bin mir nicht sicher, ob ich Deine Zielsetzung richtig begriffen habe.
Hier ein triviales Beispiel zur Überladung.
Die IDE bietet zwei Parameter-Varianten der Methode "TextInsert" an.
Der erste Parameter kann vom Typ String oder vom Typ Stringbuilder sein.
Public Class TextOps
 
    Public Shared Function InsertText _
                  (ByVal text As System.Text.StringBuilder, _
                   ByVal textToInsert As String, startposition As Integer) As _
                   String
 
        Return text.Insert(startposition, textToInsert).ToString
    End Function
 
 
    Public Shared Function InsertText_
                  (ByVal text As String, _
                   ByVal textToInsert As String, startposition As Integer) As _
                   String
 
        Dim stb As New System.Text.StringBuilder(text)
        Return InsertText(stb, textToInsert, startposition)
    End Function
End Class
"Drawing.Color" ist eine spezielle Struktur, die über eine Liste von
Membervariablen
verfügt (=benannte Farben), die jeweils einen ARGB-Farbwert darstellen
(Abfrage per: Shared ReadOnly Property).
Das hat mit den Parametern einer Methode oder einer Enumeration (Liste benannter numerischer Werte)
nichts zu tun.

Beitrag wurde zuletzt am 30.03.15 um 22:05:39 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: henrikl2000
Datum: 30.03.15 22:17

Danke nochmals.
Mein Deutsch ist leider nicht so gut wie ich es mir wünscht.
Ich habe es mit Enums versucht. Wenn ich jetzt VehicleClass aufrufe erhalte ich eine Liste.

Aber mein Ziel ist in Richtung wie Liste von Membervariablen. Geht das irgendwie?
    Public Enum VehicleGroups
        Gruppe1 = 1
        Gruppe2 = 2
        Gruppe3 = 3
        Gruppe4 = 4
        Gruppe5 = 5
        Gruppe6 = 6
        Gruppe7 = 7
    End Enum
 
    Private Sub VehicleClass(ByVal Gruppe As VehicleGroups)
 
    End Sub
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: henrikl2000
Datum: 30.03.15 22:18

Danke für deine Antwort.
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: Manfred X
Datum: 30.03.15 23:02

So ganz klar ist mir Dein Anliegen noch nicht.

Eine Auflistung von Properties in einer Struktur würde so aussehen:
Public Structure ColorX
 
    ''' <summary>Die Farbe Zartrosa als Drawing.color</summary>
    Public Shared Property ZartRosa As Color = Color.FromArgb(255, 192, 203)
    ''' <summary>Die Farbe Himmelblau (SkyBlue) als Drawing.color </summary>
    Public Shared Property Himmelblau As Color = Color.SkyBlue
    ''' <summary>Die Farbe Goldgelb als Drawing.color </summary>
    Public Shared Property GoldGelb As Color = Color.FromArgb(205, 164, 52)
 
End Structure
Bei Eingabe von "ColorX." im Code, wird diese Member-Liste angezeigt und der
korrespondierende Wert kann auf eine Color-Variable zugewiesen werden.

Wäre dies die Funktion ...
Public Sub SetColor(c As Color)
    '....
End Sub
... könnte sie so gerufen werden ....
SetColor(ColorX.GoldGelb)
Dieses Vorgehen setzt voraus, daß die Member der Liste Instanzen von der gleichen
Klasse bzw. Struktur sind und sie sich nur in den Datenwerten unterscheiden.
Hast Du unterschiedliche Klassen, wäre es - falls möglich - zweckmäßig, eine Basisklasse
zu erstellen aus der die spezifischen Klassen abgeleitet werden.

Beitrag wurde zuletzt am 30.03.15 um 23:12:21 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: henrikl2000
Datum: 31.03.15 11:16

Hallo Manfred,

Danke für deine Antwort.
Das ist auch nicht ganz was ich suche aber das kann ich trotzdem bestimmt immer mal verwenden.
Was ich meine ist deine Antworte sind immer interessant und ich lerne davon.
Du erklärt immer so dass man es versteht.

Was ich suche ist eine Lösung das funktioniert wie beim Color und andere das man beim Tippen (aufrufen der Funktion) Vorschläge in eine Liste bekommt.

Ein einfache Beispiel wo eine Liste erscheint.
        Dim aa As Boolean
        aa=
Beim Tippen aa= erscheint eine Liste mit False bspw. True
Ich hoffe du verstehst was ich meine.
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: ModeratorDaveS (Moderator)
Datum: 31.03.15 13:30

Anhang:  AnhangsomeNumbers.jpg (32k)  

So in etwa? (siehe Bild)

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: henrikl2000
Datum: 31.03.15 14:43

Hallo DaveS,

Danke für deine Antwort.
Ja fast. Dass habe ich schon versucht. Geht auch nur wollte ich es gerne kürzer haben. Wie beim True / False sowie in deinem Bild aber nur mit val, val2 usw. zur Wahl. Also ohne SomeNumbers in die Liste.

Ich habe schon ManfredX viel Kummer gemacht.

Aber vielleicht geht das gar nicht.

Auf jedem Fall bedanke ich mich für eure Lösungen.
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: Kuno60
Datum: 31.03.15 16:53

Hallo,

nur die Membernamen auflisten ist nicht möglich.
Es muss immer der Enum-Name oder bei statischem Code, der Name der Klasse oder Struktur vorangestellt werden.
Nur was im selben Bereich oder in einem Modul steht oder wenn der Name Importiert wurde, werden die Member direkt aufgelistet.
In der kommenden Version, VS 2015, soll es möglich sein die Namensvorsätze wegzulassen, also statt Math.Sin() braucht man dann nur noch Sin() zu schreiben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: henrikl2000
Datum: 31.03.15 16:57

Hallo Kuno60,

Vielen Dank für die Aufklärung. Das was sehr hilfreich.

Gruß,
Henrik
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: Manfred X
Datum: 31.03.15 18:34

Hallo!

Das was Du suchst, geht meines Wissens nicht.
Möglich ist nur der Import von Klassen,
deren zwar Member im Code direkt nutzbar sind -
die IDE zeigt sie aber bei der Parametrisierung nicht an,
wenn der Klassenname davor fehlt. Während des Eintippens
eines Parameters wird immerhin die "Auto-Complete" der IDE aktiv.
Public Class PersonX
 
    Public Shared ReadOnly Property KurtSchmalz As Person
        Get
            Return New Person("Kurt Schmalz", "Metzger", 1970)
        End Get
    End Property
 
    Public Shared ReadOnly Property GundolfBoni As Person
        Get
            Return New Person("Gundolf Boni", "Investmentbanker", 1982)
        End Get
    End Property
 
    Public Shared ReadOnly Property AlbertusSpekulatius As Person
        Get
            Return New Person("Albertus Spekulatius", "Wertpapierbroker", 1990)
        End Get
    End Property
End Class
 
 
Public Class Person
 
    Dim _name As String
    Public ReadOnly Property Name As String
        Get
            Return _name
        End Get
    End Property
 
    Dim _beruf As String
    Public ReadOnly Property Beruf As String
        Get
            Return _beruf
        End Get
    End Property
 
    Public Property _Geburtsjahr As UShort
    Public ReadOnly Property Geburtsjahr As UShort
        Get
            Return _Geburtsjahr
        End Get
    End Property
 
    Public Sub New(pname As String, pberuf As String, pgeburtsjahr As UShort)
        _name = pname
        _beruf = pberuf
        _Geburtsjahr = pgeburtsjahr
    End Sub
End Class
Anwendung in einem Formular:
Imports <Projektbezeichnung>.PersonX
 
Public Class frmDemo
 
    Private Sub frmDemo_Load(sender As System.Object, _
        e As System.EventArgs) Handles MyBase.Load
 
        Personbearbeitung(KurtSchmalz)
        'oder
        Dim pers As Person = GundolfBoni
 
    End Sub
 
    Public Sub Personbearbeitung(ByVal p As Person)
        'Code zur Bearbeitung einer Person
    End Sub
End Class


Beitrag wurde zuletzt am 31.03.15 um 18:48:00 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: ModeratorDaveS (Moderator)
Datum: 31.03.15 19:11

Anhang:  AnhangsomeNumbers.jpg (28k)  

So weit geht es schon. Color macht es nicht anders.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: Manfred X
Datum: 31.03.15 19:15

Hallo Dave!

Wie von mir weiter oben im Thread dargelegt,
macht die Color-Struktur es schon ein wenig anders.

Die benannten Farben (Shared Members) werden
intern als Long geführt.

In der IDE sieht die Liste aber ähnlich aus.

Beitrag wurde zuletzt am 31.03.15 um 19:25:51 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: ModeratorDaveS (Moderator)
Datum: 31.03.15 21:16

Das stimmt vielleicht. Ich bin nur auf "wie beim Color" bezüglich Intellisense aufmerksam geworden.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Funktion mit fest definierten Parametern 
Autor: henrikl2000
Datum: 01.04.15 14:28

Hallo,

Danke für deine immer schnelle Antworte.
Auch eine gute Lösung.

Gruß,
Henrik
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel