this function fails especially when application compiler in with /undef
hopefully the traceback can help isolate the issue
i have included my function S_IGRCHAROUT() to illustrate how i call DRAW_CHARACTERSd@
regards
steve
Runtime error from program:c:\apps_cpi\bin\star.exe Access Violation The instruction at address 070c380e attempted to read from location 0b2d7298
070c37e8 TextOutAW(<ptr>void,int,int,<ptr>constÄchar,int) [+0026]
0712258e __win_draw_text_ll(<ptr>char,int,int,int,constÄint)#75 [+0203]
07122982 __win_draw_text_d [+0109]
00c8b980 S_IGRCHAROUT [+0154]
DRAW_TEXT_AT - in file dndstr2.for at line 3382 [+0133]
DRAW_BOILER_INFO - in file dndstr2.for at line 3648 [+03a9]
DRAW_ENTITY_INFO - in file dndstr2.for at line 3245 [+019e]
DRAW_ENTITY_APP2 - in file dndstr1.for at line 5777 [+10bc]
eax=0b2d7008 ebx=000880e8 ecx=000880e8 edx=0706dfa4 esi=0706e12c edi=000880e8 ebp=0706de54 esp=0706de28 IOPL=1 ds=0023 es=0023 fs=003b gs=0000 cs=001b ss=0023 flgs=00010202 [NC OP NZ SN DN NV]
070c380e testb [eax+0x290],0x80 070c3815 je 70c38df 070c381b cmp [ebp+0x18],0x0
SUBROUTINE S_IGRCHAROUT(XPOS, YPOS, STRING)
c =====================
IMPLICIT NONE
INCLUDE 'windowsx.inc'
CHARACTER*( * ) STRING
INCLUDE 'SALFINT.INC'
DOUBLE PRECISION YPOS, XPOS,YPOS1, XPOS1
INTEGER ILENG, LENGU, IXC, IYC
c INTEGER2 IXC2, IYC2, INTS, ICOL2 INTEGER4 IXC1, IYC1
CHARACTER*81 CBUFF
IF (THEIGHT .LE. 0 .OR. TWIDTH .LE. 0) RETURN
CBUFF = ' '
ILENG = LENGU(STRING)
CBUFF = STRING(1:ILENG)
CALL WCTONDC(XPOS, YPOS, IXC, IYC)
IXC1 = INT(IXC - TWIDTH * 0.5D0)
IYC1 = INT(IYC + THEIGHT * 0.5D0)
c CALL INT4_TO_INT2(IXC1, IXC2) c CALL INT4_TO_INT2(IYC1, IYC2) xpos1 = ixc1 ypos1 = iyc1
c ICOL2 = INTS(ICOL) c CALL DRAW_CHARACTERS@(CBUFF(1:ILENG), IXC1, IYC1, ICOL_CURRENT) CALL DRAW_CHARACTERSd@(CBUFF(1:ILENG), xpos1, ypos1, ICOL_CURRENT) c CALL DRAW_characters@(CBUFF(1:ILENG), IXC2, IYC2, ICOL_CURRENT) c CALL DRAW_TEXT@(CBUFF(1:ILENG), IXC2, IYC2, ICOL_CURRENT) C CALL DRAW_TEXT@(CBUFF(1:ILENG), IXC2, IYC2, INTS(ICOL_CURRENT))
c CALL DRAW_TEXT@(CBUFF(1:ILENG)//CHAR(0),IXC2,IYC2,INTS(ICOL_CURRENT)) c CALL DRAW_TEXT@(STRING(1:ileng)//char(0),IXC2,IYC2,INTS(ICOL_CURRENT))
END