Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

[VB6] Arrays

Laurens
16 antwoorden
  • Is het mogelijk om een array als resultaat van een functie te geven?
  • Als je Strings, integers en ander spul als resultaat / variabele / waarde uit een methode / functie kunt laten komen, waarom dan geen Array???? :D
  • Dacht ik dus ook, maar tot nog toe is 't me niet gelukt.
  • [quote:477598dbd8="SabineBos"]Als je Strings, integers en ander spul als resultaat / variabele / waarde uit een methode / functie kunt laten komen, waarom dan geen Array???? :D[/quote:477598dbd8]

    Waarom geen array? Omdat een array op zich [i:477598dbd8]geen[/i:477598dbd8] datatype is.

    M.a.w. Het kan dus niet. Je kunt een funktie ieder [i:477598dbd8]datatype[/i:477598dbd8] laten retourneren, zelfs UDT's.

    Wat je wel kunt doen is een array als argument meegeven aan een funktie, dan kun je binnen die funktie ermee doen wat je wilt.

    Zoiets dus:

    [code:1:477598dbd8]
    Private Sub Command1_Click()

    Dim intArray(5) As Integer

    FuncPassArray intArray

    MsgBox CStr(intArray(0)) & " " & CStr(intArray(1)) & " " & CStr(intArray(2)) & " " & CStr(intArray(3))

    End Sub

    Public Function FuncPassArray(intArray() As Integer)

    intArray(0) = 1
    intArray(1) = 2
    intArray(2) = 3
    intArray(3) = 4

    End Function

    [/code:1:477598dbd8]
  • Over her algemeen declareren wij arrays als variant en zijn prima door te passen. Wel zelf je datachecks uitvoeren….
  • [quote:673794bff0="Tazzie"]Over her algemeen declareren wij arrays als variant en zijn prima door te passen. Wel zelf je datachecks uitvoeren….[/quote:673794bff0]

    Het kan geen kwaad de vraag eerst te lezen. :-? Die gaat over het retourneren van een array, niet over het passen. Het passen van een array gaf ik als alternatief voor het retourneren.
  • Is er een wezenlijk verschil tussen het doorgeven als parameter en het retourneren van een variabele dan?

    Greetz,

    Taz
  • [quote:f27bfee584="Tazzie"]Is er een wezenlijk verschil tussen het doorgeven als parameter en het retourneren van een variabele dan?

    Greetz,

    Taz[/quote:f27bfee584]

    Dit is toch geen serieuze vraag hoop ik :o

    Maar om het antwoord simpel te houden:
    parameter is input voor de funktie, returnwaarde het resultaat. Zeg maar, de waarde die de expressie krijgt.

    Natuurlijk, als je de variabele als pointer gebruikt (ByRef, de default in VB) kun je hem ook gebruiken om waardes terug te geven. En dat is precies wat mijn voorbeeld doet.

    Dus bijv. in een funktie:
    Public Function GeefResultaat(intWaarde as integer) as Boolean


    GeefResultaat = True 'Is dit is de returnwaarde en intWaarde de parameter.

    End Function
  • Dit is toch geen serieuze vraag hoop ik

    :-)

    >>Maar om het antwoord simpel te houden:
    >>parameter is input voor de funktie, returnwaarde het resultaat. Zeg >>maar, de waarde die de expressie krijgt

    Dat bedoel ik niet. Waar jij het overhebt is terminologie. Een parameter wordt door de aanroepende functie doorgegeven naar de aangeroepen functie. Een returwaarde wordt door de aangeroepen functie teruggegeven aan de aanroepende functie… Qua techniek is er geen verschil. Beiden passen een variabele door van de ene functie naar de andere… Dat is wat ik bedoel met wezenlijk verschil…

    Greetz,

    Taz
  • Nee, een returnwaarde is weliswaar variabel, maar geen gealloceerde variabele.
    Een variabele is hoe dan ook ergens gedeclareerd. Een returnwaarde niet.

    Denk aan expressies en je weet wat het verschil is.
  • Ik heb hem toch gedeclareerd in de functie signature? Goed, hij is niet gedeclareerd in een dim, private of public statement, maar wel kenbaar gemaakt aan het systeem.

    Bij compilatie weet de compiler de grootte van het te passen datablok.

    Wellicht dat je het me wat beter uit kan leggen…?

    Greetz,

    Taz
  • De funktie getrouwd heeft hier geen parameter, wel een returnwaarde.
    [code:1:73f876b3f3]

    Public Function Getrouwd() as Boolean
    ' Hier kan een hele hoop code staan om uiteindelijk tot de conclusie te komen dat het resultaat True is. Het resultaat wordt nergens opgeslagen.

    'Merk op dat Getrouwd de naam van de funktie is, geen variabelenaam.
    If "ouder dan 16" And 'draagt een ring" then
    Getrouwd = True
    Else
    Getrouwd = False
    End if

    End Function

    Private Sub Command1_Click()
    If Getrouwd then
    MsgBox ("Joepie, of jammer, vul maar in")
    En if
    End sub
    [/code:1:73f876b3f3]

    Getrouwd is hier geen stukje data, maar, inderdaad, een expressie (Een uitdrukking, een reeks van bewerkingen, met een bepaald resultaat zoals het vaak in C-boekjes wordt omschreven).
  • En hij hoeft nergens in het geheugen op te slaan dat de expressie Getrouwd True moet zijn of False? Ook niet als deze expressie ergens in het begin van het functieblock al wordt toegekend, maar slechts later wordt veranderd?

    Klinkt eerder als waar deze waarden worden gealloceerd, op de Hype of de Stack…

    Greetz,

    Taz
  • Wat een discussie opeens. :) Anyway, 't is idd opgelost door het returntype Variant te maken.
  • Sorry voor de discussie in jouw thread, maar ben erg leergierig…. :-)

    Mooi dat het weer werkt. Kleine opmerking, een variant datatype neemt wel iets meer geheugen in beslag. Gebruik ze dus spaarzaam.

    Greetz,

    Taz
  • Weet ik, maar de functie wordt (via een DLL) aangeroepen uit een ASP-pagina, en daar kan ik alleen maar met Varianten werken. Dat vind ik altijd zo waardeloos aan die scripttalen.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.