Well, OK,...I have run into a problem. There is a MACRO defined in ComHelper.inc, (BSTR$) the code is like this:
BSTR$ MACRO qstr:vararg
LOCAL arg,qot,q,bstrLbl,bstr_Seg,FrstL,tmpLen,cur_Pos,tmpStr,cur_tPos
cs_Seg catstr @CurSeg
ifidn cs_Seg, <CONST>
bstr_Seg TEXTEQU <.const>
elseifidn cs_Seg, <_BSS>
bstr_Seg TEXTEQU <.data?>
elseifidn cs_Seg, <_DATA>
bstr_Seg TEXTEQU <.data>
elseifidn cs_Seg, <_TEXT>
bstr_Seg TEXTEQU <.code>
endif
.data
dd _LenBSTR(qstr)
FrstL = 0
FOR arg,<qstr>
tmpStr equ <>
qot SubStr <arg>,1,1
IFIDNI qot,<!'>
tmpLen = @SizeStr(<arg>)
tmpLen = tmpLen - 2
cur_Pos = 1
cur_tPos = 0
repeat tmpLen
cur_Pos=cur_Pos+1
cur_tPos=cur_tPos+1
ch_unq SubStr <arg>,cur_Pos,1
IF cur_Pos eq 2
tmpStr CATSTR tmpStr,<!">,ch_unq,<!">
ELSE
IF cur_tPos eq 1
tmpStr CATSTR tmpStr,<!">,ch_unq,<!">
ELSE
tmpStr CATSTR tmpStr,<!,">,ch_unq,<!">
ENDIF
ENDIF
IF cur_tPos eq 15
IF FrstL eq 0
bstrLbl dw tmpStr
FrstL = 1
ELSE
dw tmpStr
ENDIF
cur_tPos = 0
tmpStr CATSTR <>
ENDIF
endm
IF tmpLen ne 0
IF cur_tPos ne 0
IF FrstL eq 0
bstrLbl dw tmpStr
FrstL = 1
ELSE
dw tmpStr
ENDIF
ENDIF
ENDIF
ELSEIFIDNI qot,<!">
tmpLen = @SizeStr(<arg>)
tmpLen = tmpLen - 2
cur_Pos = 1
cur_tPos = 0
repeat tmpLen
cur_Pos=cur_Pos+1
cur_tPos=cur_tPos+1
ch_unq SubStr <arg>,cur_Pos,1
IF (cur_Pos eq 2)
tmpStr CATSTR tmpStr,<!">,ch_unq,<!">
ELSE
IF (cur_tPos eq 1)
tmpStr CATSTR tmpStr,<!">,ch_unq,<!">
ELSE
tmpStr CATSTR tmpStr,<!,">,ch_unq,<!">
ENDIF
ENDIF
IF cur_tPos eq 15
IF FrstL eq 0
bstrLbl dw tmpStr
FrstL = 1
ELSE
dw tmpStr
ENDIF
cur_tPos = 0
tmpStr CATSTR <>
ENDIF
endm
IF tmpLen ne 0
IF cur_tPos ne 0
IF FrstL eq 0
bstrLbl dw tmpStr
FrstL = 1
ELSE
dw tmpStr
ENDIF
ENDIF
ENDIF
ELSE
IF FrstL eq 0
bstrLbl dw arg
FrstL = 1
ELSE
dw arg
ENDIF
ENDIF
ENDM
IF FrstL eq 0
bstrLbl dw 0
ELSE
dw 0
ENDIF
bstr_Seg
EXITM <OFFSET bstrLbl>
ENDM
To be perfectly honest, I don't understand what it does, except that I'm guessing that it creates a BSTR. It's called numerous times in DotNetHelper.inc, with syntax like this:
invoke CompareString, LOCALE_USER_DEFAULT, NORM_IGNORECASE, __lpstrname,9,BSTR$("mscorlib,"),9
And, everywhere this macro is called, I'm getting the following error when compiling:
error A2085: instruction or register not accepted in current CPU mode. No clue as to why,...:icon_eek:
What I really don't understand is: when I was including the ComHelper.inc and DotNetHelper.inc into my project, I knew I was going to get compiler errors, so I included the ComHelper.inc file first, but, NOT, the DotNetHelper.inc file, just to see what kind of errors I was going to get,...and the project compiled without any errors at all. Apparently, the MACRO syntax will compile, but, is not expanded until it is actually invoked in the source, is this correct ?
...And, by the way,...what does ELSEIFIDN mean ??? I've looked everywhere, and could not find a definition for it,...