Vraag & Antwoord

Programmeren

eval()-functie in VB 6

Anoniem
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.