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 quote-hell (hoe een variabele uitput binnen quotes)

Anoniem
webspider
7 antwoorden
  • Luitjes ik heb een probleempje waar ik niet meet uit kom. Ik heb een DLL filetje gekregen van mijn collega die ik kan gebruiken om het 1 en ander uit te rekenen. Die DLL file kan ik declaren als "sub" om hem dan als sub aan te roepen her en der in mijn progje. De volgende declaratie kreeg ik van hem mee, en die werkt ook!

    [quote:da13270175]
    Declare Sub scale1w Lib _
    "C:\WINDOWS\scale1w.dll" _
    (ByVal TempDir As String, ByVal Length As Long)
    [/quote:da13270175]

    Dit werkt naar behoren, alleen wil ik de DLL file niet in mijn windows directory plaatsen, maar in mijn applicatie directory en dan gebruik maken van "App.Path" zodat waar iemand het progje dan ook installeerd hij altijd de DLL kan vinden.

    Nu mijn vraag dus! Hoe kan ik C:\WINDOWS vervangen voor App.Path??

    Ik weet dat het gehele gebeuren tussen quotes moet vanwege de Lib

    De gehele string zal iets moeten worden als;

    [quote:da13270175]
    App.Path & "\scale1w.dll"
    [/quote:da13270175]

    Maar hoe zet je deze output tussen quotes? het volgende werkt in ieder geval niet

    [quote:da13270175]
    " App.Path & "\scale1w.dll" "
    [/quote:da13270175]

    Wie kan mij helpen met die quote hell, het zullen een hoop quotes worden denk ik, maar ik kom er niet uit.
  • Volgens mij werkt het gewoon door C:\WINDOWS\ weg te halen. C:\WINDOWS gebruiken is sowieso smerig omdat die directory ook wel eens G:\WINNT kan heten ;)

    Als het goed is wordt een DLL vanzelf gezocht in zowel de applicatie-directory als de system(32)-directory. Als je dus die dll in je applicatie-directory zet en schrijft:

    [quote:5248a603b6]Declare Sub scale1w Lib "scale1w.dll" (ByVal TempDir As String, ByVal Length As Long)[/quote:5248a603b6]

    dan moet het goedkomen.

    Opmerking: tijdens het debuggen zou het wel eens niet kunnen werken, zet dan die dll gewoon op je eigen computer wel in de system(32)-directory. Je zult zien dat je programma gecompileerd wel overweg kan met de dll (alleen) in je eigen directory (probeer het eens uit).
  • :D Harstikke bedankt

    Gecompileerd vindt hij hem inderdaad gewoon in de applicatie directory en inderdaad in debug mode niet, maar ik hem hem even in de system dir gegooid en dat doet hij het voor het debuggen ook gewoon.

    Alleen straks met het setup maken niet vergeten de dll mee te geven naar de applicatie directory.

    Nogmaals geweldig, beddankt voor de snelle hulp!
  • en de dubbele quotes los je op met chr$(34) :)
  • [quote:1d2e63443a="webspider"]en de dubbele quotes los je op met chr$(34) :)[/quote:1d2e63443a]
    Maar in dit geval zou het sowieso niet werken: die strings in de declaratie van een dll MOET een string-constante zijn. App.Path is dat niet, dus mag het niet.

    (Wat vaak nog makkelijker werkt is escapen: strEenVariabele = "Achter de dubbele punt staat precies 1 dubbel-quote: "" ook al zie je er in de code 2!")
  • escapen werkt niet in VB…. en je mag voor _iedere_ string in principe een variabele geven…
  • [quote:df8b414c19="webspider"]escapen werkt niet in VB…. en je mag voor _iedere_ string in principe een variabele geven…[/quote:df8b414c19]

    Juist. Bedankt. Niet waar dus. Graag uitproberen voordat je iets zegt. (Ik wil je wel uitleggen waarom je bijv. die string niet van een variabele mag voorzien: die string wordt statisch gecompileerd… maarja, je gelooft me toch niet…)

Beantwoord deze vraag

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