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 - Ein- und Umsteiger
Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 31.10.06 19:34

Hi zusammen

Ich habe eine Funktion geschrieben die mir eine Liste durchsucht. Dabei
erhalte ich die Zeile und die Spalte wo das Objekt gefunden wurde.
Darum möchte ich als Rückgabe der Funktion die Möglichkeit haben beide Parameter
zurückzugeben. Ist das irgendwie möglich?

Bis jetzt habe ich die Funktion als Integer definiert aber da kann ich ja nur
ein Wert zurückgeben.

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: ModeratorFZelle (Moderator)
Datum: 31.10.06 19:57

Entweder Du gibst eine Struct zurück ( z.B. Point ) oder Du machst es mit byRef parametern.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 31.10.06 20:37

Danke für deine Antwort.
Wie funktioniert das denn mit ByRef?
Hast du ein Beispiel oder ein Link wo das beschrieben wird?

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: Moderatorralf_oop (Moderator)
Datum: 01.11.06 07:19

Public Sub MyFunc(ByVal para1 As Integer, ByVal para2 As Integer, ByRef out1 As _
  Integer, ByRef out2 As Integer)
   out1 = para1 + para2
   out2 = para1 - para2
End Sub

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 01.11.06 09:43

Vielen Dank Ralf.
Wie kann ich denn nun auf diese Rückgabewerte zugreifen?
Bei mir sieht das so aus.
    Function Find(ByVal Searchtext As String, ByRef Spalte As Integer) As _
      Integer
    ' den ersten wert gebe ich mit
    return 10
 
    Spalte = 2
    End Function
Wie kann ich dann jetzt den Wert abfragen den die Variable "Spalte" besitzt?

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: Moderatorralf_oop (Moderator)
Datum: 01.11.06 11:13

Dim spalte As Integer
Dim result As Integer = Find("searchpattern", spalte)
Nach dem Funktionsaufruf steht in spalte der "2.Rückgabewert" drin.

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 01.11.06 12:37

Funktioniert!
Vielen Dank.

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: spike24
Datum: 02.11.06 08:14

wäre eventuell zu beachten das
Spalte = 2
vor
return ...
steht
sonst verlässt Du die funktion bevor der wert beschrieben wird
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 02.11.06 08:20

JA, Danke!
Das habe ich dann auch bemerkt.

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: Oliver_G.
Datum: 02.11.06 10:50

Nun es geht aber anders auch.
du kannst ein Array ebenso zurückgeben lassen.

Private Function suche(ByVal sstring As String) As Integer()
        Dim ar(1) As Integer
        ar(0) = 1
        ar(1) = 2
        Return ar
    End Function
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: Moderatorralf_oop (Moderator)
Datum: 02.11.06 10:57

Oder man erstellt eine eigene Struktur/Klasse, welche die verschiedensten Ergebnisse speichern und gibt diese Struktur/Klasse zurück. Wie man sieht, führen viele Wege nach Rom

Ralf

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: ModeratorDaveS (Moderator)
Datum: 02.11.06 10:58

Immerhin sollte man ByRef vergessen. Ich finde die erste Lösung von FZelle empfehlenswert, es geht ja um einen Rückgabewert mit zwei Unterwerten, Spalte und Reihe oder so. Nun sollte man das Ergebnis auch so strukturieren, eben mit einer Structure. Ein Array kann man sinnvoll benutzen aber das ist für gleiche Werte, wenn man mehrmals bestimmte Werte hat, die alle semantisch gleich sind. Hier hat man zwei unterschiedliche Werte. Wenn man die Fähigkeiten der Sprache ausnutzt und Daten strukturiert in einer Art, die dem Sinne der Daten entspricht bleibt das Programm klar, logisch und ohne eventuell unerwartete Nebeneffekte..

________
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: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 02.11.06 12:06

Soll ich dann die Function als Point (Function Find(ByVal Searchtext As String) As Point ) deklarieren?
Oder wie meinst du das mit Structure?

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: ModeratorDaveS (Moderator)
Datum: 02.11.06 12:26

Tja, POINT, dein Wert ist vielleicht im gewissen Sinne ein Point, aber das ist nicht wirklich passend. Wenn du schön sauber programmieren willst schreibst du eine eigene Structure, so in etwa
    Public Structure ItemLocation
        Public Zeile As Integer
        Public Spalte As Integer
        Public Sub New(ByVal Zeile As Integer, ByVal Spalte As Integer)
            Me.Zeile = Zeile
            Me.Spalte = Spalte
        End Sub
    End Structure
    Public Function FindLocation(irgendwelche Parameter) As ItemLocation
 
        '....
        Return New ItemLocation(13, 21031946)
    End Function

________
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: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 02.11.06 12:45

Danke Dave. Das sieht wirklich schön und sauber aus!
Ich werde es mal ausprobieren.

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 02.11.06 21:06

Mein Problem ist jetzt wie kann ich denn nun mit einer Abfrage auf beide
Variablem zugreifen?
Wenn ich das so mache wird ja die Funktion zweimal ausgeführt und
das ist ja nicht der Sinn davon.
   Dim Spalte As Integer = Find(ToolStriptxtSuche.Text).Spalte
   Dim Zeile As Integer = Find(ToolStriptxtSuche.Text).Zeile

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: ModeratorDaveS (Moderator)
Datum: 02.11.06 21:11

Tja, du machst alles irgendwie unnötig umständlich.

Wozu brauchst zu zwei Variablen überhaupt?
    Dim loc As ItemLocation = Find(ToolStriptxtSuche.Text)
Dann musst du nur loc.Spalte oder loc.Zeile nehmen. Und wenn du wirklich zwei Variablen brauchst machst du das mit
   Dim Spalte As Integer = loc.Spalte
   Dim Zeile As Integer = loc.Zeile

________
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: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 02.11.06 21:13

Oh, man. So einfach!
Hmm.. ich finde es schon gut wenn der Anwender gleich weiss
in welcher Zeile und Spalte( bei zehn und mehr) sein gesuchter Text steht.
Danke für deine Hilfe.

fg viperbone

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Eine Funktion, zwei Rückgabeparameter 
Autor: ModeratorDaveS (Moderator)
Datum: 02.11.06 21:16

Du kannst deine Structure mit .ToString() ausstatten um etwa "Spalte=m, Zeile=n" zurückzugeben. Dann brauchst du nur loc.ToString() um das Ergebnis darzustellen.

________
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: Eine Funktion, zwei Rückgabeparameter 
Autor: viperbone
Datum: 02.11.06 21:18

Nein, ist schon gut. Ich brauche die Integer Werte
noch damit ich die Zeile markieren kann. Aber danke
für den guten Tipp.

fg viperbone

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