mirror of
https://github.com/QB64Official/qb64.git
synced 2024-07-05 01:50:25 +00:00
Merges Latest $DEBUG tweaks from var-export
Latest $DEBUG tweaks.
This commit is contained in:
commit
c6707f044a
|
@ -26203,15 +26203,16 @@ void sub_put2(int32 i,int64 offset,void *element,int32 passed){
|
|||
int32 func__screenhide(){return -screen_hide;}
|
||||
|
||||
void sub__consoletitle(qbs* s){
|
||||
if (new_error) return;
|
||||
static qbs *sz=NULL; if (!sz) sz=qbs_new(0,0);
|
||||
static qbs *cz=NULL; if (!cz){cz=qbs_new(1,0); cz->chr[0]=0;}
|
||||
qbs_set(sz,qbs_add(s,cz));
|
||||
if (console){ if (console_active){
|
||||
#ifdef QB64_WINDOWS
|
||||
SetConsoleTitle((char*)sz->chr);
|
||||
#endif
|
||||
char *title;
|
||||
title = (char *)malloc(s->len + 1);
|
||||
title[s->len] = '\0'; //add NULL terminator
|
||||
memcpy(title, s->chr, s->len);
|
||||
if (console){ if (console_active){
|
||||
SetConsoleTitle(title);
|
||||
Sleep(40);
|
||||
}}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -941,6 +941,14 @@ inline int16 func_abs(int16 d){return abs(d);}
|
|||
inline int32 func_abs(int32 d){return abs(d);}
|
||||
inline int64 func_abs(int64 d){return llabs(d);}
|
||||
|
||||
ptrszint check_lbound(ptrszint *array) {
|
||||
return func_lbound((ptrszint*)(*array),1,1);
|
||||
}
|
||||
|
||||
ptrszint check_ubound(ptrszint *array) {
|
||||
return func_ubound((ptrszint*)(*array),1,1);
|
||||
}
|
||||
|
||||
inline ptrszint array_check(uptrszint index,uptrszint limit){
|
||||
//nb. forces signed index into an unsigned variable for quicker comparison
|
||||
if (index<limit) return index;
|
||||
|
|
|
@ -6,10 +6,12 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
|||
STATIC AS _BYTE vw_pauseMode, vw_stepOver, vw_bypass, vw_setNextLine, vw_hwndsent
|
||||
STATIC AS _OFFSET vw_idehwnd
|
||||
STATIC vw_buffer$
|
||||
DIM AS LONG vw_i, vw_tempIndex, vw_localIndex, vw_varSize, vw_sequence, vw_cmdsize
|
||||
DIM AS _OFFSET vw_address
|
||||
DIM AS LONG vw_i, vw_tempIndex, vw_localIndex, vw_varSize, vw_cmdsize
|
||||
DIM AS _OFFSET vw_address, vw_lbound, vw_ubound
|
||||
DIM AS _MEM vw_m, vw_m2
|
||||
DIM vw_start!, vw_temp$, vw_cmd$, vw_value$, vw_k&, vw_buf$, vw_scope$
|
||||
DIM AS _BYTE vw_isarray
|
||||
DIM vw_start!, vw_temp$, vw_cmd$, vw_value$, vw_k&, vw_buf$, vw_scope$, vw_varType$
|
||||
DIM vw_dummy%&
|
||||
|
||||
DECLARE LIBRARY
|
||||
SUB vwatch_stoptimers ALIAS stop_timers
|
||||
|
@ -17,6 +19,8 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
|||
SUB unlockvWatchHandle
|
||||
SUB set_qbs_size (target AS _OFFSET, BYVAL length&)
|
||||
FUNCTION stop_program_state&
|
||||
FUNCTION check_lbound%&(array AS _OFFSET)
|
||||
FUNCTION check_ubound%&(array AS _OFFSET)
|
||||
END DECLARE
|
||||
|
||||
$IF WIN THEN
|
||||
|
@ -97,11 +101,13 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
|||
LOOP
|
||||
END IF
|
||||
|
||||
IF vw_hwndsent = 0 AND _WINDOWHANDLE > 0 THEN
|
||||
IF vw_hwndsent = 0 THEN
|
||||
IF _WINDOWHANDLE > 0 THEN
|
||||
vw_hwndsent = -1
|
||||
vw_cmd$ = "hwnd:" + _MK$(_OFFSET, _WINDOWHANDLE)
|
||||
GOSUB SendCommand
|
||||
END IF
|
||||
END IF
|
||||
|
||||
IF vwatch_linenumber = 0 THEN
|
||||
GOSUB SendCallStack
|
||||
|
@ -248,26 +254,22 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
|||
CASE "call stack"
|
||||
'send call stack history
|
||||
GOSUB SendCallStack
|
||||
CASE "get address"
|
||||
CASE "get global var", "get local var"
|
||||
vw_tempIndex = CVL(LEFT$(vw_value$, 4))
|
||||
vw_arrayIndex = CVL(MID$(vw_value$, 5, 4))
|
||||
vw_sequence = CVI(MID$(vw_value$, 9, 2))
|
||||
vw_varSize = CVL(MID$(vw_value$, 11, 4))
|
||||
vw_address = _CV(_OFFSET, MID$(vw_value$, 15, LEN(vw_address)))
|
||||
vw_buf$ = SPACE$(vw_varSize)
|
||||
vw_m = _MEM(vw_address, vw_varSize)
|
||||
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
|
||||
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
|
||||
vw_cmd$ = "address read:" + MKL$(vw_tempIndex) + MKL$(vw_arrayIndex) + MKI$(vw_sequence) + _MK$(_OFFSET, vw_address) + vw_buf$
|
||||
GOSUB SendCommand
|
||||
CASE "get global address", "get local address"
|
||||
vw_tempIndex = CVL(LEFT$(vw_value$, 4))
|
||||
vw_localIndex = CVL(MID$(vw_value$, 5, 4))
|
||||
vw_arrayIndex = CVL(MID$(vw_value$, 9, 4))
|
||||
vw_sequence = CVI(MID$(vw_value$, 13, 2))
|
||||
vw_varSize = CVL(MID$(vw_value$, 15, 4))
|
||||
vw_scope$ = MID$(vw_value$, 19)
|
||||
IF vw_cmd$ = "get global address" THEN
|
||||
vw_isarray = _CV(_BYTE, MID$(vw_value$, 5, 1))
|
||||
vw_localIndex = CVL(MID$(vw_value$, 6, 4))
|
||||
vw_arrayIndex = CVL(MID$(vw_value$, 10, 4))
|
||||
vw_varSize = CVL(MID$(vw_value$, 14, 4))
|
||||
vw_i = CVI(MID$(vw_value$, 18, 2))
|
||||
IF vw_i THEN
|
||||
vw_scope$ = MID$(vw_value$, 20, vw_i)
|
||||
vw_i = CVI(MID$(vw_value$, 20 + vw_i, 2))
|
||||
vw_varType$ = RIGHT$(vw_value$, vw_i)
|
||||
ELSE
|
||||
vw_i = CVI(MID$(vw_value$, 20, 2))
|
||||
vw_varType$ = RIGHT$(vw_value$, vw_i)
|
||||
END IF
|
||||
IF vw_cmd$ = "get global var" THEN
|
||||
vw_address = _OFFSET(globalVariables) + LEN(vw_address) * vw_localIndex
|
||||
ELSE
|
||||
IF vw_scope$ = LEFT$(vwatch_stack(vwatch_sublevel), INSTR(vwatch_stack(vwatch_sublevel), ",") - 1) THEN
|
||||
|
@ -279,12 +281,85 @@ SUB vwatch (globalVariables AS _OFFSET, localVariables AS _OFFSET)
|
|||
vw_address = _MEMGET(vw_m, vw_address, _OFFSET) 'first resolve pass
|
||||
vw_address = _MEMGET(vw_m, vw_address, _OFFSET) 'second resolve pass
|
||||
|
||||
IF vw_isarray THEN
|
||||
vw_lbound = check_lbound%&(vw_address)
|
||||
vw_ubound = check_ubound%&(vw_address)
|
||||
|
||||
IF vw_arrayIndex < vw_lbound OR vw_arrayIndex > vw_ubound THEN
|
||||
GOTO cmdProcessingDone
|
||||
END IF
|
||||
|
||||
'get the address of where this array's data is stored
|
||||
vw_buf$ = SPACE$(LEN(vw_dummy%&))
|
||||
vw_m = _MEM(vw_address, LEN(vw_dummy%&))
|
||||
vw_m2 = _MEM(_OFFSET(vw_buf$), LEN(vw_dummy%&))
|
||||
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
|
||||
|
||||
IF LEN(vw_dummy%&) = 8 THEN
|
||||
vw_address = _CV(_INTEGER64, vw_buf$) 'Pointer to data
|
||||
ELSE
|
||||
vw_address = _CV(LONG, vw_buf$) 'Pointer to data
|
||||
END IF
|
||||
'vw_address now points to the actual data
|
||||
|
||||
'find the required element for this array
|
||||
IF INSTR(vw_varType$, "STRING *") THEN
|
||||
vw_varSize = VAL(MID$(vw_varType$, _INSTRREV(vw_varType$, " ") + 1))
|
||||
ELSEIF INSTR(vw_varType$, "STRING") THEN
|
||||
vw_varSize = LEN(vw_dummy%&)
|
||||
END IF
|
||||
|
||||
'this is where we calculate the actual element position in memory
|
||||
vw_address = vw_address + ((vw_arrayIndex - vw_lbound) * vw_varSize)
|
||||
END IF
|
||||
|
||||
'vw_address now points to the actual data
|
||||
vw_buf$ = SPACE$(vw_varSize)
|
||||
vw_m = _MEM(vw_address, vw_varSize)
|
||||
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
|
||||
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
|
||||
vw_cmd$ = "address read:" + MKL$(vw_tempIndex) + MKL$(vw_arrayIndex) + MKI$(vw_sequence) + _MK$(_OFFSET, vw_address) + vw_buf$
|
||||
|
||||
IF INSTR(vw_varType$, "STRING *") > 0 AND vw_isarray <> 0 THEN
|
||||
'actual data already fetched; nothing else to do
|
||||
ELSEIF INSTR(vw_varType$, "STRING") THEN
|
||||
IF vw_isarray THEN
|
||||
'First pass
|
||||
vw_varSize = LEN(vw_dummy%&)
|
||||
vw_buf$ = SPACE$(vw_varSize)
|
||||
vw_m = _MEM(vw_address, vw_varSize)
|
||||
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
|
||||
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
|
||||
|
||||
IF LEN(vw_dummy%&) = 8 THEN
|
||||
vw_address = _CV(_INTEGER64, vw_buf$) 'Pointer to data
|
||||
ELSE
|
||||
vw_address = _CV(LONG, vw_buf$) 'Pointer to data
|
||||
END IF
|
||||
|
||||
'Second pass
|
||||
vw_varSize = LEN(vw_dummy%&) + LEN(vw_varSize)
|
||||
vw_buf$ = SPACE$(vw_varSize)
|
||||
vw_m = _MEM(vw_address, vw_varSize)
|
||||
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
|
||||
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
|
||||
END IF
|
||||
|
||||
'vw_buf$ now contains a pointer to the string data
|
||||
'as well as the number of bytes we have to read
|
||||
IF LEN(vw_dummy%&) = 8 THEN
|
||||
vw_address = _CV(_INTEGER64, LEFT$(vw_buf$, 8)) 'Pointer to data
|
||||
vw_varSize = CVL(MID$(vw_buf$, 9))
|
||||
ELSE
|
||||
vw_address = _CV(LONG, LEFT$(vw_buf$, 4)) 'Pointer to data
|
||||
vw_varSize = CVL(MID$(vw_buf$, 5))
|
||||
END IF
|
||||
vw_buf$ = SPACE$(vw_varSize)
|
||||
vw_m = _MEM(vw_address, vw_varSize)
|
||||
vw_m2 = _MEM(_OFFSET(vw_buf$), vw_varSize)
|
||||
_MEMCOPY vw_m, vw_m.OFFSET, vw_m.SIZE TO vw_m2, vw_m2.OFFSET
|
||||
END IF
|
||||
|
||||
vw_cmd$ = "address read:" + MKL$(vw_tempIndex) + MKL$(vw_arrayIndex) + vw_buf$
|
||||
GOSUB SendCommand
|
||||
CASE "set global address", "set local address"
|
||||
vw_localIndex = CVL(LEFT$(vw_value$, 4))
|
||||
|
|
|
@ -7384,14 +7384,13 @@ SUB DebugMode
|
|||
temp$ = MID$(temp$, 9)
|
||||
cmd$ = ""
|
||||
IF LEN(usedVariableList(tempIndex&).subfunc) = 0 THEN
|
||||
cmd$ = "get global address:"
|
||||
cmd$ = "get global var:"
|
||||
ELSE
|
||||
cmd$ = "get local address:"
|
||||
cmd$ = "get local var:"
|
||||
END IF
|
||||
GOSUB GetVarSize
|
||||
IF usedVariableList(tempIndex&).isarray THEN varSize& = LEN(dummy%&)
|
||||
IF LEN(cmd$) THEN
|
||||
cmd$ = cmd$ + MKL$(tempIndex&) + MKL$(usedVariableList(tempIndex&).localIndex) + MKL$(tempArrayIndex&) + MKI$(1) + MKL$(varSize&) + usedVariableList(tempIndex&).subfunc
|
||||
cmd$ = cmd$ + MKL$(tempIndex&) + _MK$(_BYTE, usedVariableList(tempIndex&).isarray) + MKL$(usedVariableList(tempIndex&).localIndex) + MKL$(tempArrayIndex&) + MKL$(varSize&) + MKI$(LEN(usedVariableList(tempIndex&).subfunc)) + usedVariableList(tempIndex&).subfunc + MKI$(LEN(usedVariableList(tempIndex&).varType)) + usedVariableList(tempIndex&).varType
|
||||
GOSUB SendCommand
|
||||
END IF
|
||||
LOOP
|
||||
|
@ -7401,44 +7400,8 @@ SUB DebugMode
|
|||
CASE "address read"
|
||||
tempIndex& = CVL(LEFT$(value$, 4))
|
||||
tempArrayIndex& = CVL(MID$(value$, 5, 4))
|
||||
sequence% = CVI(MID$(value$, 9, 2))
|
||||
address%& = _CV(_OFFSET, MID$(value$, 11, LEN(address%&)))
|
||||
recvData$ = MID$(value$, 11 + LEN(address%&))
|
||||
recvData$ = MID$(value$, 9)
|
||||
GOSUB GetVarSize
|
||||
IF usedVariableList(tempIndex&).isarray THEN
|
||||
SELECT CASE sequence%
|
||||
CASE 1 'received array's address; request tempArrayIndex&
|
||||
IF LEN(dummy%&) = 8 THEN
|
||||
address%& = _CV(_INTEGER64, LEFT$(recvData$, 8)) 'Pointer to data
|
||||
ELSE
|
||||
address%& = _CV(LONG, LEFT$(recvData$, 4)) 'Pointer to data
|
||||
END IF
|
||||
|
||||
IF INSTR(usedVariableList(tempIndex&).varType, "STRING *") THEN
|
||||
varType$ = usedVariableList(tempIndex&).varType
|
||||
varSize& = VAL(MID$(varType$, _INSTRREV(varType$, " ") + 1))
|
||||
ELSEIF varType$ = "STRING" THEN
|
||||
varSize& = LEN(dummy%&)
|
||||
END IF
|
||||
address%& = address%& + ((tempArrayIndex& - 1) * varSize&)
|
||||
cmd$ = "get address:" + MKL$(tempIndex&) + MKL$(tempArrayIndex&) + MKI$(2) + MKL$(varSize&) + _MK$(_OFFSET, address%&)
|
||||
GOSUB SendCommand
|
||||
GOTO vwatch_sequence_done
|
||||
CASE 2 'actual string data received or variable-length address
|
||||
IF INSTR(usedVariableList(tempIndex&).varType, "STRING *") THEN
|
||||
GOTO storeReceivedData
|
||||
ELSEIF varType$ = "STRING" THEN
|
||||
varSize& = LEN(dummy%&) + LEN(dummy&)
|
||||
cmd$ = "get address:" + MKL$(tempIndex&) + MKL$(tempArrayIndex&) + MKI$(3) + MKL$(varSize&) + recvData$
|
||||
GOSUB SendCommand
|
||||
GOTO vwatch_sequence_done
|
||||
END IF
|
||||
CASE 3 'got an address and the length of this string array index
|
||||
GOTO requestActualStringData
|
||||
CASE 4 'variable-length string data finally received
|
||||
GOTO storeReceivedData
|
||||
END SELECT
|
||||
END IF
|
||||
SELECT CASE varType$
|
||||
CASE "_BYTE", "BYTE": recvData$ = STR$(_CV(_BYTE, recvData$))
|
||||
CASE "_UNSIGNED _BYTE", "UNSIGNED BYTE": recvData$ = STR$(_CV(_UNSIGNED _BYTE, recvData$))
|
||||
|
@ -7453,32 +7416,17 @@ SUB DebugMode
|
|||
CASE "_FLOAT", "FLOAT": recvData$ = STR$(_CV(_FLOAT, recvData$))
|
||||
CASE "_OFFSET", "OFFSET": recvData$ = STR$(_CV(_OFFSET, recvData$))
|
||||
CASE "_UNSIGNED _OFFSET", "UNSIGNED OFFSET": recvData$ = STR$(_CV(_UNSIGNED _OFFSET, recvData$))
|
||||
CASE "STRING"
|
||||
IF sequence% = 1 THEN
|
||||
requestActualStringData:
|
||||
IF LEN(dummy%&) = 8 THEN
|
||||
address%& = _CV(_INTEGER64, LEFT$(recvData$, 8)) 'Pointer to data
|
||||
strLength& = CVL(MID$(recvData$, 9))
|
||||
ELSE
|
||||
address%& = _CV(LONG, LEFT$(recvData$, 4)) 'Pointer to data
|
||||
strLength& = CVL(MID$(recvData$, 5))
|
||||
END IF
|
||||
|
||||
sequence% = sequence% + 1
|
||||
cmd$ = "get address:" + MKL$(tempIndex&) + MKL$(tempArrayIndex&) + MKI$(sequence%) + MKL$(strLength&) + _MK$(_OFFSET, address%&)
|
||||
GOSUB SendCommand
|
||||
GOTO vwatch_sequence_done
|
||||
END IF
|
||||
'CASE "STRING": 'no conversion required
|
||||
END SELECT
|
||||
storeReceivedData:
|
||||
IF usedVariableList(tempIndex&).isarray THEN
|
||||
seqIndex& = INSTR(usedVariableList(tempIndex&).indexes, MKL$(tempArrayIndex&))
|
||||
storageSlot& = CVL(MID$(usedVariableList(tempIndex&).storage, seqIndex&, 4))
|
||||
IF seqIndex& <= LEN(usedVariableList(tempIndex&).mostRecentValue) - 3 THEN
|
||||
storageSlot& = CVL(MID$(usedVariableList(tempIndex&).mostRecentValue, seqIndex&, 4))
|
||||
vWatchArrayReceivedData$(storageSlot&) = recvData$
|
||||
END IF
|
||||
ELSE
|
||||
usedVariableList(tempIndex&).mostRecentValue = recvData$
|
||||
END IF
|
||||
vwatch_sequence_done:
|
||||
IF PauseMode THEN GOSUB UpdateDisplay
|
||||
CASE "current sub"
|
||||
currentSub$ = value$
|
||||
|
@ -7703,15 +7651,22 @@ SUB showvWatchPanel (this AS vWatchPanelType, currentScope$, totalVisibleVariabl
|
|||
END IF
|
||||
item$ = thisName$ + SPACE$(longestVarName - LEN(thisName$)) + " = "
|
||||
IF usedVariableList(tempIndex&).subfunc = currentScope$ OR usedVariableList(tempIndex&).subfunc = "" THEN
|
||||
isString = (INSTR(usedVariableList(tempIndex&).varType, "STRING *") > 0 OR usedVariableList(tempIndex&).varType = "STRING")
|
||||
IF usedVariableList(tempIndex&).isarray THEN
|
||||
seqIndex& = INSTR(usedVariableList(tempIndex&).indexes, MKL$(tempArrayIndex&))
|
||||
storageSlot& = CVL(MID$(usedVariableList(tempIndex&).storage, seqIndex&, 4))
|
||||
IF seqIndex& <= LEN(usedVariableList(tempIndex&).mostRecentValue) - 3 THEN
|
||||
storageSlot& = CVL(MID$(usedVariableList(tempIndex&).mostRecentValue, seqIndex&, 4))
|
||||
tempValue$ = vWatchArrayReceivedData$(storageSlot&)
|
||||
END IF
|
||||
ELSE
|
||||
tempValue$ = usedVariableList(tempIndex&).mostRecentValue
|
||||
END IF
|
||||
|
||||
IF isString THEN
|
||||
item$ = item$ + CHR$(34) + tempValue$ + CHR$(34)
|
||||
ELSE
|
||||
item$ = item$ + tempValue$
|
||||
END IF
|
||||
COLOR fg
|
||||
ELSE
|
||||
item$ = item$ + "<out of scope>"
|
||||
|
@ -7818,7 +7773,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
|||
IF dialogHeight < 9 THEN dialogHeight = 9
|
||||
|
||||
dialogWidth = 6 + maxModuleNameLen + maxVarLen + maxTypeLen
|
||||
IF IdeDebugMode > 0 THEN dialogWidth = dialogWidth + 200 'make room for "= values"
|
||||
IF IdeDebugMode > 0 THEN dialogWidth = dialogWidth + 100 'make room for "= values"
|
||||
IF dialogWidth < 60 THEN dialogWidth = 60
|
||||
IF dialogWidth > idewx - 8 THEN dialogWidth = idewx - 8
|
||||
|
||||
|
@ -8006,6 +7961,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
|||
longestVarName = 0
|
||||
nextvWatchArraySlot = 0
|
||||
FOR y = 1 TO totalVariablesCreated
|
||||
usedVariableList(y).mostRecentValue = ""
|
||||
IF usedVariableList(y).watch THEN
|
||||
thisLen = LEN(usedVariableList(y).name)
|
||||
IF usedVariableList(y).isarray THEN
|
||||
|
@ -8025,7 +7981,7 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
|||
WHILE nextvWatchArraySlot > UBOUND(vWatchArrayReceivedData$)
|
||||
REDIM _PRESERVE vWatchArrayReceivedData$(1 TO UBOUND(vWatchArrayReceivedData$) + 999)
|
||||
WEND
|
||||
usedVariableList(y).storage = usedVariableList(y).storage + MKL$(nextvWatchArraySlot)
|
||||
usedVariableList(y).mostRecentValue = usedVariableList(y).mostRecentValue + MKL$(nextvWatchArraySlot)
|
||||
vWatchArrayReceivedData$(nextvWatchArraySlot) = ""
|
||||
temp$ = MID$(temp$, 5)
|
||||
LOOP
|
||||
|
@ -8034,6 +7990,12 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
|||
END IF
|
||||
END IF
|
||||
NEXT
|
||||
IF mousedown THEN
|
||||
DO
|
||||
GetInput
|
||||
_LIMIT 100
|
||||
LOOP UNTIL mRELEASE
|
||||
END IF
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
|
||||
|
@ -8074,6 +8036,9 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
|||
temp$ = parseRange$(v$)
|
||||
usedVariableList(varDlgList(y).index).indexes = temp$
|
||||
temp$ = formatRange$(temp$)
|
||||
IF usedVariableList(varDlgList(y).index).watchRange <> temp$ THEN
|
||||
usedVariableList(x).mostRecentValue = ""
|
||||
END IF
|
||||
usedVariableList(varDlgList(y).index).watchRange = temp$
|
||||
ELSE
|
||||
usedVariableList(varDlgList(y).index).indexes = ""
|
||||
|
@ -8284,12 +8249,30 @@ FUNCTION idevariablewatchbox$(currentScope$, filter$, selectVar, returnAction)
|
|||
END IF
|
||||
|
||||
l$ = l$ + text$ + l3$
|
||||
IF totalVisibleVariables = 1 THEN doubleClickThreshold = LEN(l$) - 1
|
||||
IF totalVisibleVariables = 1 THEN doubleClickThreshold = LEN(l$) - 3
|
||||
|
||||
IF IdeDebugMode > 0 THEN
|
||||
IF usedVariableList(x).subfunc = currentScope$ OR usedVariableList(x).subfunc = "" THEN
|
||||
IF usedVariableList(x).watch THEN
|
||||
l$ = l$ + " = " + CHR$(16) + CHR$(variableNameColor) + StrReplace$(usedVariableList(x).mostRecentValue, CHR$(0), " ")
|
||||
isString = (INSTR(usedVariableList(x).varType, "STRING *") > 0 OR usedVariableList(x).varType = "STRING")
|
||||
IF usedVariableList(x).isarray THEN
|
||||
temp$ = usedVariableList(x).mostRecentValue
|
||||
IF LEN(temp$) THEN l$ = l$ + " = " + CHR$(16) + CHR$(variableNameColor) + "{"
|
||||
DO WHILE LEN(temp$)
|
||||
storageSlot& = CVL(LEFT$(temp$, 4))
|
||||
temp$ = MID$(temp$, 5)
|
||||
IF isString THEN l$ = l$ + CHR$(34)
|
||||
l$ = l$ + StrReplace$(vWatchArrayReceivedData$(storageSlot&), CHR$(0), " ")
|
||||
IF isString THEN l$ = l$ + CHR$(34)
|
||||
IF LEN(temp$) THEN l$ = l$ + ","
|
||||
LOOP
|
||||
IF LEN(usedVariableList(x).mostRecentValue) THEN l$ = l$ + "}"
|
||||
ELSE
|
||||
l$ = l$ + " = " + CHR$(16) + CHR$(variableNameColor)
|
||||
IF isString THEN l$ = l$ + CHR$(34)
|
||||
l$ = l$ + StrReplace$(usedVariableList(x).mostRecentValue, CHR$(0), " ")
|
||||
IF isString THEN l$ = l$ + CHR$(34)
|
||||
END IF
|
||||
END IF
|
||||
ELSE
|
||||
l$ = l$ + " <out of scope>"
|
||||
|
@ -8812,10 +8795,12 @@ FUNCTION idecallstackbox
|
|||
idecentercurrentline
|
||||
ideselect = 0
|
||||
|
||||
IF mousedown THEN
|
||||
DO
|
||||
GetInput
|
||||
_LIMIT 100
|
||||
LOOP UNTIL mRELEASE
|
||||
END IF
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
END IF
|
||||
|
@ -10418,12 +10403,24 @@ FUNCTION ideinputbox$(title$, caption$, initialvalue$, validinput$, boxwidth, ma
|
|||
END IF
|
||||
|
||||
IF K$ = CHR$(27) OR (focus = 3 AND info <> 0) THEN
|
||||
IF mousedown THEN
|
||||
DO
|
||||
GetInput
|
||||
_LIMIT 100
|
||||
LOOP UNTIL mRELEASE
|
||||
END IF
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
|
||||
IF K$ = CHR$(13) OR (focus = 2 AND info <> 0) THEN
|
||||
ideinputbox$ = idetxt(o(1).txt)
|
||||
ok = -1
|
||||
IF mousedown THEN
|
||||
DO
|
||||
GetInput
|
||||
_LIMIT 100
|
||||
LOOP UNTIL mRELEASE
|
||||
END IF
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
'end of custom controls
|
||||
|
@ -12092,6 +12089,12 @@ FUNCTION idesubs$
|
|||
IF K$ = CHR$(27) OR (focus = 5 AND info <> 0) THEN
|
||||
idesubs$ = "C"
|
||||
GOSUB SaveSortSettings
|
||||
IF mousedown THEN
|
||||
DO
|
||||
GetInput
|
||||
_LIMIT 100
|
||||
LOOP UNTIL mRELEASE
|
||||
END IF
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
|
||||
|
@ -12109,6 +12112,12 @@ FUNCTION idesubs$
|
|||
idesx = 1
|
||||
|
||||
GOSUB SaveSortSettings
|
||||
IF mousedown THEN
|
||||
DO
|
||||
GetInput
|
||||
_LIMIT 100
|
||||
LOOP UNTIL mRELEASE
|
||||
END IF
|
||||
EXIT FUNCTION
|
||||
END IF
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ TYPE usedVarList
|
|||
AS LONG id, linenumber, includeLevel, includedLine, scope, localIndex
|
||||
AS _BYTE used, watch, isarray
|
||||
AS STRING name, cname, varType, includedFile, subfunc, mostRecentValue
|
||||
AS STRING watchRange, indexes, elements, storage 'for Arrays and UDTs
|
||||
AS STRING watchRange, indexes, elements 'for Arrays and UDTs
|
||||
AS _OFFSET baseAddress
|
||||
END TYPE
|
||||
|
||||
|
@ -25955,7 +25955,6 @@ SUB manageVariableList (__name$, __cname$, localIndex AS LONG, action AS _BYTE)
|
|||
usedVariableList(i).used = 0
|
||||
usedVariableList(i).watch = 0
|
||||
usedVariableList(i).mostRecentValue = ""
|
||||
usedVariableList(i).storage = ""
|
||||
usedVariableList(i).linenumber = linenumber
|
||||
usedVariableList(i).includeLevel = inclevel
|
||||
IF inclevel > 0 THEN
|
||||
|
|
Loading…
Reference in a new issue