Ga naar inhoud

VB6 quote-hell (hoe een variabele uitput binnen quotes)


anoniem

Aanbevolen berichten

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.
Link naar reactie
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).
Link naar reactie
: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!
Link naar reactie
[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!")
Link naar reactie
[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...)
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...