VBScript: Hvordan påkalle jeg en funksjon som er definert med en vokal i Dispatch Kart

stemmer
4

Jeg har følgende VBScript-skript som oppretter en Microsoft COM-objektet.

set foo = CreateObject(Bar.ProgId)
foo.Einfügen()

Gjennomføringen av at COM-objektet er i Dynamic Link Library Foo.dllsom bruker Microsoft Foundation Framework (MFC) og spesielt mekanismen av Dispatch Maps .

Utsendelse Maps viser som dette

BEGIN_DISPATCH_MAP(Foo, CCmdTarget)
[...]
DISP_FUNCTION(Foo, Einfügen, Insert, VT_I2, VTS_NONE)
[...]
END_DISPATCH_MAP()

Så langt så bra. Når jeg lager en slik COM-objekt i en VBA-Environment for eksempel i et Excel Application, påkalling av foo.Einfügener vellykket. Annet enn i VBScript-Script.

Jeg innså at OLE Automation er brukt i VBA samt i VBScript. Men når jeg kjører VBScript-Script Jeg fikk feil

Feil: unknow karakter; Kode 8000A0408;
Kilde: Compile svikt i Microsoft VBScript

Først trodde jeg at kodingen i VBScript-Script er feil på grunn av karakteren ü, men jeg bekreftet at det er ANSI kodet. Jeg har også bekreftet at Windows Kodesett på systemet mitt er Windows-1252 Vest latinske tegnsett.

Hvis jeg endrer Einfügentil Einfuegeni Dispatch Kart jeg påstå at VBScript-Script fungerer.

Så mitt spørsmål er, hvorfor oppførselen til påkalling av foo.Einfügener forskjellig i VBScript enn i VBA? Hva er årsaken til dette problemet?

For meg den midlertidige løsningen er at jeg legge en ny DISP_FUNCTIONoppføring i Dispatch Kart som sender Einfuegentil funksjonen Insert. I VBScript-Script jeg påberope foo.Einfuegenog i VBA fortsatt foo.Einfügen.

Publisert på 07/10/2015 klokken 11:09
kilden bruker
På andre språk...                            


1 svar

stemmer
5

Navnekonvensjoner.
I motsetning til sine større brødre VBA og VB6, det er en syntaksfeil i VBScript. VBScript kompilatoren forventer enkeltbytetegn for uttrykk.

Se på:

Syntaksfeil (VBScript)

Ugyldig tegn (VBScript)

Du må skrive uttrykk som inneholder tegn som ikke støttes vedlagt i parentes.

set foo = CreateObject("Bar.ProgId")
foo.[Einfügen]() 'this will work
Svarte 07/10/2015 kl. 20:45
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more