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

eval()-functie in VB 6

h4xX0r
4 antwoorden
  • Hallo,

    Ik wil in VB-code de eval()-functie gebruiken om reguliere expressies
    te evalueren. Nu heeft VB 6 niet standaard een eval()-functie, maar
    via (ActiveX) Script Control kan de eval()-functie van VBScript gebruikt
    worden. Het werkt allemaal redelijk, maar er zitten een paar
    eigenaardigheidjes in.

    Bijvoorbeeld de expressie

    [code:1:bded2a8ec1]
    5 = "foobar"
    [/code:1:bded2a8ec1]

    vind ie niet fijn (en terecht vanwege de type mismatch).
    Maak ik er echter

    [code:1:bded2a8ec1]
    (2 + 3) = "foobar"
    [/code:1:bded2a8ec1]

    van, dan knalt ie er [b:bded2a8ec1]niet[/b:bded2a8ec1] uit, maar evalueert tot False.
    Dat is natuurlijk niet de bedoeling, want de expressie is gewoonweg
    niet correct.

    Weet iemand hoe die eval()-functie precies te werk gaat, want het
    werkt niet helemaal zoals ik zou willen.

    Kan iemand uitleggen wat de mogelijkheden en onmogelijkheden
    van deze functie zijn?

    Alvast bedankt.

    PS) Alternatieve oplossingen zijn ook welkom :)
  • Webprogrammeren -> Programmeren.
  • [quote:67d60eb09d="JurgenvW"]Het werkt allemaal redelijk, maar er zitten een paar
    eigenaardigheidjes in.
    [/quote:67d60eb09d]
    [quote:67d60eb09d=""]

    Bijvoorbeeld de expressie

    [code:1:67d60eb09d]
    5 = "foobar"
    [/code:1:67d60eb09d]

    vind ie niet fijn (en terecht vanwege de type mismatch).
    Maak ik er echter

    [code:1:67d60eb09d]
    (2 + 3) = "foobar"
    [/code:1:67d60eb09d]

    van, dan knalt ie er [b:67d60eb09d]niet[/b:67d60eb09d] uit, maar evalueert tot False.
    Dat is natuurlijk niet de bedoeling, want de expressie is gewoonweg
    niet correct.
    [/quote:67d60eb09d]
    Gokje. Scenario #1

    Waarschijnlijk omdat je in het eerste voorbeeld expliciet zegt:
    [i:67d60eb09d](integer = string)[/i:67d60eb09d]

    En in het tweede voorbeeld:
    [i:67d60eb09d]expressie = string[/i:67d60eb09d]
    waarbij de expressie uiteindelijk een string oplevert, omdat VB automatisch alles intern naar het juiste formaat probeert om te zetten.
    [quote:67d60eb09d="JurgenvW"]
    Weet iemand hoe die eval()-functie precies te werk gaat, want het
    werkt niet helemaal zoals ik zou willen.
    [/quote:67d60eb09d]
    Wat is het resultaat van:
    [code:1:67d60eb09d]
    (2 + 3) = "5"
    [/code:1:67d60eb09d]
    [quote:67d60eb09d="JurgenvW"]
    Kan iemand uitleggen wat de mogelijkheden en onmogelijkheden
    van deze functie zijn?

    Alvast bedankt.

    PS) Alternatieve oplossingen zijn ook welkom :)[/quote:67d60eb09d]
  • Ok,
    [code:1:97ef21b5e2]
    (2+3)="5"
    [/code:1:97ef21b5e2]
    levert idd TRUE op.
    Dat verklaart een hoop.
    Bedankt voor de tip.

Beantwoord deze vraag

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